“月份中的某一天”和“星期几”crontab 字段是否互斥?

“月份中的某一天”和“星期几”crontab 字段是否互斥?

根据阿图尔·梅尼尔德的回答这里,crontab 的“月份中的某一天”和“星期几”字段是互斥的。然而,根据man 5 crontab(对于亲信来说,如果重要的话):

当“分钟”、“小时”和“一年中的月份”字段与当前时间匹配,并且两个“日期”字段中的至少一个(“月份中的日期”或'星期几') 匹配当前时间

那么,以下行是错误,还是/bin/true每周三加每月第二天运行的指令? cronie 的手册页记录的是标准行为,还是特定于应用程序的怪癖?

* * 2 * 3    /bin/true

答案1

POSIX的规范crontab,以标准语言措辞(旨在最大程度地减少歧义)可能有最清晰的解释(强调,为了清晰起见,段落分割):

可以通过两个字段(月份中的日期和星期几)来指定日期。

如果月、月中的某一天、星期几都是<星号>字符,则每天都将被匹配。

如果月份或月份中的某一天被指定为元素或列表,但星期几是 <asterisk>,则月份和月份中的某一天字段应指定匹配的日期。

如果月份和月份中的某一天都指定为 <asterisk>,但星期几是元素或列表,则只有一周中指定的天数匹配。

最后,如果月份或月份中的某一天被指定为元素或列表,并且星期几也被指定为元素或列表,则与月份和月份中的某一天或星​​期几匹配的任何一天都应为匹配。

这证实了:

  1. 如果当前日期是,则执行示例中的任务任何一个星期三或该月的第二天。

  2. 这是有记录的标准行为。

相关内容