crontab的星期几和月份的某天必须同时匹配吗?

时间:2019-01-07 23:22:10

标签: cron

Wikipedia说:

  

通常在指定时间/日期时执行作业   所有字段均与当前时间和日期匹配,只有一个例外:如果   “月的某天”(字段3)和“星期几”(字段5)都是   限制(不是“ *”),则其中之一或两者必须与当天匹配。[3]

这是否意味着我设置

一周中的某天= 2,月份中的某天= 09

OR

一周中的某天= 3,一周中的某天= 10

那么任务将不会在2019年1月9日(星期三)运行?

我认为Wiki不正确。

2 个答案:

答案 0 :(得分:1)

每月的某天和一周的某天之间的函数为OR。这样的记录

0 0 9 1 2

0 0 10 1 3

都将执行脚本。关系是

day of week OR day of month

作为参考,请检查cron中的man page

  

注意:命令的执行日期可以由两个字段指定   -每月的某天和一周的某天。如果两个字段都受限制(即不是*),则当任一字段与   当前时间。

答案 1 :(得分:1)

这意味着是否满足两个条件之一(可以是两个,也可以不需要)

  

注意:可以在以下两个字段中指定命令的执行日期-“月中的天”和“周中的天”。如果两个字段都受限制(即不包含*字符),则在以下情况下将运行该命令          两个字段均与当前时间匹配。例如,          30 4 1,15 * 5将导致命令在每月的1号和15号的凌晨4:30运行,每个星期五 plus

     

来源:man 5 crontab

在OP的示例中,如果日期为Wednesday Jan 09 2019,则为crontab:

x x 9 x 2

将执行,因为它是该月的第九天,并且

x x 10 x 3

将执行,因为它是星期三