Cron

特定選項的 crontab 調度

  • February 2, 2022

我需要添加一個每季度執行一次的 crontab 條目,在第二個星期日凌晨 2 點。

以下哪個是正確的?作業系統是 AIX。

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

或者

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

分鐘、小時和月份是正確的。

星期幾和每月幾日之間存在互動作用。您的第一個版本將在每天 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 

引用自:https://unix.stackexchange.com/questions/688870