调度的基本格式
* * * * * cmd
分 时 日 月 周 命令
第1列表示分钟 0 - 59,每分钟用 * 或者 */1表示。
第2列表示小时 0 - 23,0表示0点。
第3列表示日期 1 - 31
第4列表示月份 1 - 12
第5列表示星期 0 - 6, 0表示星期日
第6列是要运行的命令
月和周的属性值还可以用相应英语单词的前3个字母来表示,如jan
表示一月,mon-wen
表示周一到周三。
特殊符号:
- 逗号
,
来分隔多个时间值, -
表示一个时间范围,*
表示该属性的所有取值,是否有效取决于相关属性的值。/n
代表每隔n个时间单位的意思,*/5
表示每隔5个单位,1-10/2
表示1至10之间每隔2个时间单位,也就是1,3,5,7。-
如果时属性指定了具体值,而分属性是
*
则表示整点。
注意:因为日期属性与周属性都表示某一天,两者之间的关系是比较微妙的。
- 如果两个属性都是
*
,当然是按每天调度。 - 如果两个属性中有一个是具体的,如
0-3
,另一个是*
,则按具体的属性调度,*
不再表示所有取值。 - 如果两个属性都是具体值,则按两个规则调度,都有效。
举例
1 0 * * * cmd 每天00:01执行cmd
*/5 * * * * cmd 每隔5分钟执行cmd
30 4 1,15, 28 * * cmd 每月1,15,28号4:30执行cmd
20 3 * * 1-5 cmd 每周一至五 3:20执行cmd
30 4 1,15 * 1-3 cmd 每月1,15号以及每周一到三 4:30执行cmd
0 23-6/2,12 * * * cmd 每天23-6点每隔2小时及12时执行cmd
crontab
使用者:所有用户。
使用方式:
crontab file [-u user] 用指定的文件替代指定用户(如果有权限)目前的 crontab,
crontab - [-u user] 用标准输入替代指定用户(如果有权限)目前的 crontab,
corntab -l [user] 列出用户目前的crontab
corntab -e [user] 编辑用户目前的crontab
corntab -r [-i] [user] 删除用户目前的crontab,-i 选项表示删除前需要确认。
crontab 的文件格式: 分 时 日 月 周 命令
命令被送入sh执行,这个shell只有 USER, HOME, SHELL
这个三个环境变量。
用户提交的crontab是由cron守护进程执行的。
cron
是一个守护进程,用于执行用户提交的crontab调度命令。一般只有root用户才能执行cron和查看其他用户的调度命令。
一些与调度有关的文件:
/etc/crontab
存放系统运行的调度程序。/etc/cron.deny
表示不能使用crontab 命令的用户。/etc/cron.allow
表示能使用crontab的用户。
如果上面两个文件同时存在,那么/etc/cron.allow 优先。如果两个文件都不存在,那么只有超级用户可以安排作业。- 每个用户提交的crontab调度都存放在
/var/spool/cron/crontabs/
目录下在与用户名同名的文件里。
欢迎关注我的微信公众号: coderbee笔记,可以更及时回复你的讨论。