转:
給定周中的特定天
另一個常見的需求是,僅在每月中的特定星期數運行。例如,可能希望在每個月的第一個星期一或星期五運行一個報告。為了完成此任務,可以使用與上面類似的過程。對於給定周中的任何天,它一定屬於以下日期範圍之一:
第 1 周:第 1 天到第 7 天
第 2 周:第 8 天到第 14 天
第 3 周:第 15 天到第 21 天
第 4 周:第 22 天到 28 天
要確定當前日期是否在給定範圍內,例如是否在第四周範圍內,可以使用與以下所示類似的測試:
[ `date +%e` -gt 21 -a `date +%e` -lt 29 ]
%e 用於返回當天的號數,如果數字小於 10 則用一個空格(而不是零)作為其前綴,以確保對數字(而非字符串)進行比較。
現在可以將此與 crontab 定義一起使用,以嘗試每週星期五運行命令:
59 23 * * 5 [ `date +%e` -gt 21 -a `date +%e` -lt 29 ]
&& do-something
命令將在每週星期五運行,但由於測試將僅在每個月的第四周返回 True,命令將實際在第三個星期五執行。