tomai
登入

Cron 速查:五個欄位、特殊字元與常見坑

cron 用五個欄位描述定時計畫——分鐘、小時、月中日、月份、星期——後面跟要執行的命令。一行 30 9 * * 1 表示每週一上午九點半,幾乎所有 Unix 系統和無數排程器都講這種方言。

1. 欄位與取值範圍

分鐘 0 到 59,小時 0 到 23,月中日 1 到 31,月份 1 到 12,星期 0 到 7,其中 0 和 7 都表示週日。星號表示該位置取所有值,所以 0 * * * * 表示每小時整點觸發。

2. 步長、範圍與列表

斜線定步長——分鐘欄位的 */15 表示每十五分鐘——連字號定範圍,如星期 1-5 表示週一到週五,逗號連接列表如 0,30。三者自由組合,所以 0 9-17 * * 1-5 讀作工作日工作時間每小時一次。

3. 日期欄位的 OR 特性

月中日和星期兩個欄位同時受限時,cron 在任一匹配時觸發——不是同時匹配。想寫每月第一個週一要格外小心,因為同時限制兩個欄位是放寬而不是收窄計畫。把其中一個留成星號,另一個才能說了算。

4. 預設與環境陷阱

daily、weekly 這類簡寫會展開成欄位模式,但經典五欄位形式在系統之間移植性最好。記住 cron 運行在極簡環境裡:終端機裡的路徑、locale 和 shell 習慣都帶不過去,所以一律用絕對路徑,先手工跑通命令再寫進計畫。用 our cron generator 視覺化拼表達式並預覽下次運行時間,結果直接在瀏覽器裡算出。