Cron

“月中日”和“周中日” crontab 欄位是否互斥?

  • August 3, 2020

根據 Artur Meinild在此處的回答,crontab 的“月中日”和“周中日”欄位是互斥的。但是,根據man 5 crontab(對於親信,如果重要的話):

當 ‘minute’、‘hour’ 和 ‘month of the year’ 欄位與目前時間匹配,並且兩個 ‘day’ 欄位中的至少一個(‘day of month’ 或’day of week’) 匹配目前時間

那麼,下面的行是錯誤,還是/bin/true在每個星期三加上每個月的第二天執行的指令?cronie 的手冊頁是記錄標準行為還是特定於應用程序的怪癖?

* * 2 * 3    /bin/true

POSIX規範crontab,用標準語言措辭——旨在最大限度地減少歧義——可能有最清晰的解釋(為了清晰起見,添加了重點,段落拆分):

可以通過兩個欄位(月中的日和周中的日)來指定日。

如果月份、月份、星期幾都是<星號>字元,則每天都要匹配。

如果月份或月份中的某一天被指定為元素或列表,但星期幾是<星號>,則月份和月份中的日期欄位應指定匹配的日期。

如果月份和月份中的某天都指定為 <asterisk>,但星期幾是一個元素或列表,則只有指定的星期幾匹配。

最後,如果月份或月份中的某一天被指定為元素或列表,並且星期幾也被指定為元素或列表,那麼任何匹配月份和月份日期或星期幾的日期,應匹配。

這證實了:

  1. 如果目前日期是星期三或每月的第二天,則執行範例中的任務
  2. 這是記錄在案的標準行為。

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