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字段,表示每十分钟执行一次。