当前位置:首页 > IT技术 > 系统服务 > 正文

Ubuntu下用crontab 部署定时任务
2021-09-06 19:11:32

crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。通俗来讲就是执行定时任务的一个命令。

1.crontab的安装以及服务的开启

第一步:检查你得服务器上是否安装了crontab

rpm -qa | grep crontab

若没有,首先就在服务器上安装

 apt-get install cron

第二步:开启定时任务

运行:crontab –e
然后进入一个可编辑的文件,编写定时任务:
*/1 * * * * /usr/bin/python /python/asch-check.py

以上代码的寓意为:表示1分钟执行一次asch-check.py脚本

第三步:启动服务

service cron start

第四步:查看定时任务

crontab -l #查看定时任务

2.安装日志服务rsyslog

第一步:安装 rsyslog

apt-get install rsyslog

第二步:启动日志

service rsyslog start

第三步:编辑设置

vi /etc/rsyslog.d/50-default.conf

cron.*              /var/log/cron.log #将cron前面的注释符去掉 

第四步:重启

service rsyslog restart

第五步:查看cron运行任务和日志:

crontab -l #查看定时任务

等到时间到了之后,发现定时任务未执行

tail -f /var/log/cron.log  查看日志

3.cron常用的命令

crontab file [-u user]-用指定的文件替代目前的crontab。 
crontab-[-u user]-用标准输入替代目前的crontab. 
crontab-1[user]-列出用户目前的crontab. 
crontab-e[user]-编辑用户目前的crontab. 
crontab-d[user]-删除用户目前的crontab. 
crontab-c dir- 指定crontab的目录。
eg:
service cron start     //启动服务

service cron stop      //关闭服务

service cron restart   //重启服务

service cron reload    //重新载入配置

service cron status    //查看crontab服务状态

crontab –l  //查看定时任务
 

4.常用的周期格式


每五分钟执行 */5 * * * *

每小时执行    0 * * * *

每天执行        0 0 * * *

每周执行       0 0 * * 0

每月执行        0 0 1 * *

每年执行       0 0 1 1 *

每分钟执行一次  * * * * * user command

每隔2小时执行一次**/2 ** * user command (/表示频率)

每天8:30分执行一次308 * * * user command

每小时的30和50分各执行一次   30,50 * * * * user command(,表示并列)

每个月的3号到6号的8:30执行一次  30 8 3-6 * * user command (-表示范围)

每个星期一的 8:30 执行一次   30 8 * * 1 user command (周的范围为0-7,0和7代表周日)

eg:
30 21 * * * /usr/local/etc/rc.d/lighttpd restart           #每晚的21:30重启apache。 
45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart   #每月1、10、22日的4 : 45重启apache。 
10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart          #每周六、周日的1 : 10重启apache。 
0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart    #每天18 : 00至23 : 00之间每隔30分钟重启apache。 
0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart              #每星期六的11 : 00 pm重启apache。 
0 */1 * * * /usr/local/etc/rc.d/lighttpd restart               #每一小时重启apache 
0 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart         #晚上11点到早上7点之间,每隔一小时重启apache 
0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart  #每月的4号与每周一到周三的11点重启apache 
0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart               #一月一号的4点重启apache 

 5.特殊字符的含义

特殊字符:
星号(*):代表’‘每’'的意思,例如month字段如果是星号,则表示每月都执行该命令。
逗号(,):表示分隔时段的意思,例如,“1,3,5,7,9”。
中杠(-):表示一个时间范围,例如“2-6”表示“2,3,4,5,6”。
正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。

 

本文摘自 :https://www.cnblogs.com/

开通会员,享受整站包年服务立即开通 >