Linux下使用Crontab定时执行脚本及多种案例

  • 一、安装与基本语法
  • 1、安装
  • 2、语法
  • 3、时间
  • 二、案例
  • 1、定时输出任务
  • 2、定时清空日志


一、安装与基本语法

1、安装

yum -y install vixie-cron
yum install crontabs

2、语法

crontab -e  		#: 修改 crontab 文件,如果文件不存在会自动创建。 
crontab -l  		#: 显示 crontab 文件。 
crontab -r 			#: 删除 crontab 文件。
crontab -ir 		#: 删除 crontab 文件前提醒用户。
cat  /etc/crontab   #:查看crontab文件

3、时间

在crontab文件中写入需要执行的命令和时间,该文件中每行都包括六个域,其中前五个域是指定命令被执行的时间,最后一个域是要被执行的命令。每个域之间使用空格或者制表符分隔。格式如下:

minute hour day-of-month month-of-year day-of-week commands  
分钟    小时   天              月            星期      要执行的命令
前面五个参数中间用空格隔开,最后是要执行的命令。

合法值为:00-59 00-23 01-31 01-12 0-6 (0 is sunday)

除了数字还有几个特殊的符号:"*"、"/“和”-"、","

  • *代表所有的取值范围内的数字
  • "/“代表每的意思,”/5"表示每5个单位
  • "-"代表从某个数字到某个数字
  • ","分开几个离散的数字

注:commands 注意以下几点

  • 要是存在文件,要写绝对路径
  • 即使是打印也不会显示在显示屏,在后台运行,最好重定向日志

二、案例

1、定时输出任务

写一个定时任务,每分钟往test.txt文件写入一个"good"字符串

mkdir /home/mycorn
touch /home/mycorn/mytest.txt
vim /etc/crontab
#命令如下
*/1 * * * * echo "good" >> /home/mycorn/mytest.txt
#开启定时任务
crontab /etc/crontab

java cron指定日期 crontab 指定日期执行_linux

2、定时清空日志

表示每四秒执行一个往mytest.log中填写一个“good”,然后每五秒通过for循环mycorn文件夹下以log为后缀的日志清除一遍日志(同一行的语句以;隔开)

*/4 * * * * echo "good" >> /home/mycorn/mytest.log
*/5 * * * * for i in `find /home/mycorn/ -name "*.log"`; do cat /dev/null > $i; done

实例2里一个文件中使用了多个定时、多个命令,使用crontab执行多个命令时,还有很多其他写法。比如只写一个定时,后面的命令写在一行,命令与命令之间用“;”分号隔开。例如实例2中的每一行命令,其实是3个命令写在一起。把上述12个命令全部写1行也是可以的。