crontab调度

调度的基本格式


*    *     *    *     *       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笔记,可以更及时回复你的讨论。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据