Cron
特定選項的 crontab 調度
我需要添加一個每季度執行一次的 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