crontab 不满足所有要求

crontab 不满足所有要求

这是我的 crontab 条目,我基本上想在每年 4 月 1 日运行,但前提是 4 月 1 日是星期四。

0 13 1 4 4 /path/to/my/script.sh

但这似乎每周都会运行。我缺少什么?

答案1

crontab 条目的问题是已经指出了,但要按照预期的日期和时间执行脚本,请将作业计划更改为:

0 13 1 4 * [ "$(date +\%u)" -eq 4 ] && /path/to/my/script.sh

答案2

man -s 5 crontab说:

注意:命令执行的日期可以由两个字段指定 - 月份中的某一天和星期几。如果两个字段都受到限制(即不是 *),则当任一字段与当前时间匹配时将运行该命令。

您对这一天的指定是 Both1st dayThursday,因此它在两者上运行(但如果第一天也是星期四,则不会运行两次,如 2021 年)。

通常的解决方法是让 crontab 在第一天运行,并让脚本使用date命令检查星期几,并提前退出,除非星期四。

对于一个七年才运行一次的脚本来说,这似乎很麻烦。

相关内容