Cron

Cron:除每月第一天和每週第一天外,每天執行

  • October 16, 2019

我對 cron 還很陌生,我正試圖找出一種方法來每週的每一天執行一項工作,除了每個月的第一天和每週的第一天。

這可能聽起來有點奇怪,但上下文是這是用於備份任務。我想每天備份一次,但也想保留一些備份時間稍長一些,所以每周備份一次,每個月備份一次。

我想為日常工作設置一個 cron 任務,但我很難了解如何有效地不執行日常任務,如果它是在每週或每月備份也將執行的那一天。我想我可以通過為每個月的每一天添加一個單獨的 cron 任務來實現這一點,但這感覺不對,因為它是很多單獨的任務。

有沒有更好的方法在 cron 中實現這一點?

我會用一周中的某一天限制來安排工作,然後在實際工作前加上date“一個月中的某一天”的測試。對小時和分鐘欄位使用您自己的值。“day-of-the-month”欄位是*,意思是在一個月的任何一天和所有天執行。“月”欄位也是開放的。“星期幾”欄位僅限於星期一到星期六,跳過一周的第一天(假設您將星期日算作一周的第一天)。如果星期一是您一周的第一天,請改用0,2-6“星期幾”值。

(minute) (hour) * * 1-6 [ $(date +\%e) -ne 1 ] && actual-job

由於此註釋,最簡單的方法(限制月份和星期幾欄位)不起作用man 5 crontab,我用粗體強調:

注意:可以在以下兩個欄位中指定命令執行的日期——“day of month”和“day of week”。如果兩個欄位都受限制(即不包含“*”字元),則當一欄位與目前時間匹配時,將執行該命令。例如,

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