1、概述
crontab是用来设置在固定时间点或时间间隔执行某条指令,类似于时程表。使用-u user是指定user用户的时程表。
2、参数
-e[UserName] :调出编辑器,编辑定时任务,打开后里边有多重文本编辑器,可更具自己偏好选择,若未指定UserName,则是当前shell下的用户
-r[UserName] :删除指定用户当前的时程表,则是当前shell下的用户
-l[UserName] :列出指定用户当前的时程表,则是当前shell下的用户
-v[UserName] :列出指定用户的cron作业状态,则是当前shell下的用户
3、时程表的格式说明
F1 F2 F3 F4 F5 program
(分钟 小时 日 月 星期 作业命令)
例如:5 */1 * * * /usr/sbin/ntpdate cms是指在每小时的第5分钟执行/usr/sbin/ntpdate cms这个命令。
说明见下图:
4、样例
#每天早上6点10分
10 6 * * * date
#每两个小时
0 */2 * * * date
#晚上11点到早上8点之间每两个小时,包括早上8点
0 23-7/2,8 * * * date
#每个月的4号和每个礼拜一到礼拜三的早上11点
0 11 4 * 1-3 date
#1月1日早上4点
0 4 1 1 * date
编写执行命令时要注意当前的环境变量。
5、与sleep配合实现秒级别的定时
如果你在终端直接执行:
sleep 3s;/bin/date
很明显的能看到,sleep可以延时执行命令,那么和crontab结合就实现了秒级别的定时,如下:
* * * * * sleep 10s; /bin/date >>/tmp/date.txt * * * * * sleep 20s; /bin/date >>/tmp/date.txt * * * * * sleep 30s; /bin/date >>/tmp/date.txt * * * * * sleep 40s; /bin/date >>/tmp/date.txt * * * * * sleep 50s; /bin/date >>/tmp/date.txt
这时候观察/temp/date.txt,就可看见每10秒有条时间记录。
当然,sleep时间单位也有分、时、天(m, h, d),本例中只使用了秒。