特定选项的 crontab 调度

特定选项的 crontab 调度

我需要添加一个 crontab 条目,该条目每季度运行一次,即第二个星期日凌晨 02 点。

下面哪一项是正确的?操作系统是AIX。

00 02 8-14 */3 0  &&  /myscript.sh 

或者

00 02 8-14 */3 * [ "$(date '+\%a')" == "Sun" ]  &&  /myscript.sh

答案1

分钟、小时和月份正确。

星期几和月份之间存在交互作用。您的第一个版本将在 8 日到 14 日每天运行,每个星期日(但如果 11 号是星期日,则不会两次)。

man -s 5 crontab

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

您的第二个版本可能有两个问题:

(1) 它可以由 /bin/sh 运行,或者由 crontab 中指定的某个 shell 运行。我不确定它==的便携性如何。

(2) “Sun”是特定于语言环境的。

我可能会用 回避这些[ "$( date '+\%u')" -eq 7 ],但用评论解释。

这导致

00 02 8-14 1,4,7,10 * [ "$(date '+\%u')" -eq 7 ] && /myscript.sh 

相关内容