根据星期几执行两次 cron

根据星期几执行两次 cron

我有个问题。我们有一个本月 15 日执行的 cron 作业:

min hr day month day_of_week
35  13 15  6     6

但是,它在 6 月 22 日(即一周的第 6 天)再次执行。day_of_week 会优先于之前已设置的 day & month 吗?

答案1

虽然通常情况下,当时间/日期指定字段全部与当前时间和日期匹配时,就会执行作业,但有一个例外:如果“月份中的日期”和“星期几”都受到限制(不是“*”),则“月份中的日期”字段 (3) 或“星期几”字段 (5) 必须与当前日期匹配

https://en.wikipedia.org/wiki/Cron

因此它只发生在 6 月,即 13:35。此外,它必须是 6 月 15 日或一周中的第 6 天。两者同时发生也可以。

跑步man 5 crontab会给你一些额外的信息,他们建议你使用test指定具体日期并限制星期几:

注意:命令执行的日期可以通过两个字段指定 - 月份日期和星期几。如果两个字段都受到限制(即不是 *),则当任一字段与当前时间匹配时,将运行命令。例如,“30 4 1,15 * 5”将导致命令在每个月 1 日和 15 日以及每个星期五的凌晨 4:30 运行。但是,可以通过向命令添加测试来实现所需的结果(请参阅下面的示例 CRON 文件中的最后一个示例)。

[...]

# Run on every second Saturday of the month
0 4 8-14 * *    test $(date +\%u) -eq 6 && echo "2nd Saturday"

相关内容