Cron

每日、每周和每月 Cron 作業

  • April 27, 2017

最近我寫了一個簡單的小腳本來備份一個目錄到 S3。我的目標是執行每日、每周和每月備份,根據 S3 中的頻率具有不同的保留規則。

除了一個例外,一切都執行良好。我的每週 cron 作業每天都在執行。這是 crontab:

0 3 1 * * /usr/s3_sync_dir /dropbox MONTHLY
0 2 2-31 * THU /usr/s3_sync_dir /dropbox WEEKLY
0 3 2-31 * * /usr/s3_sync_dir /dropbox DAILY

因此,每月 1 日凌晨 3 點執行 MONTHLY 作業。如果不是第一次,每週應該在星期四凌晨 2 點執行。DAILY 每天都在執行,這不是第一次。這個線上驗證器確認WEEKLY 應該只在每週四執行。

任何人都知道為什麼我的每週工作每天早上都執行?

這是在 Ubuntu 16.04.2 LTS 上。

來自手冊(man 5 crontab)

注意:命令執行的日期可以由兩個欄位指定 - 月中的日和周中的日。如果兩個欄位都受限制(即不是 *),則當任一欄位與目前時間匹配時,將執行該命令。

例如,``30 4 1,15 * 5’’ 將導致命令在每個月的 1 日和 15 日以及每個星期五的凌晨 4:30 執行。但是,可以通過向命令添加測試來獲得所需的結果(參見下面的範例 CRON 文件中的最後一個範例)。

我想你應該把你的 2-31 變成 *

或者

您可以使用@daily、@weekly 和@monthly。

或者

您可以連結到 /etc/cron.daily、/etc/cron.weekly、/etc/cron.monthly 中的腳本。

引用自:https://serverfault.com/questions/846902