我有个问题。我们有一个本月 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"