Cron 排程語法入門教學:5 分鐘學會定時任務設定
Cron 是 Linux 系統中最常見的定時任務排程工具。本篇教學帶你從零開始認識 Cron 語法的五個欄位、常用符號與實用範例,並推薦免費線上工具幫助你快速產生與驗證 Cron 表達式。
什麼是 Cron?為什麼你需要學它?
Cron 是 Unix/Linux 系統內建的定時任務排程工具,讓你可以在指定的時間自動執行腳本、備份資料庫、發送報表郵件等重複性工作。無論你是後端工程師、系統管理員,還是使用雲端服務(如 AWS、GCP)的開發者,Cron 語法都是必備技能之一。
然而,Cron 的語法對初學者來說並不直覺。本篇文章將帶你用最簡單的方式,5 分鐘內掌握 Cron 排程語法的核心概念。
Cron 表達式的基本結構
一個標準的 Cron 表達式由五個欄位組成,每個欄位之間以空格分隔,分別代表不同的時間單位:
- 第 1 欄:分鐘(Minute) — 範圍 0–59
- 第 2 欄:小時(Hour) — 範圍 0–23
- 第 3 欄:日期(Day of Month) — 範圍 1–31
- 第 4 欄:月份(Month) — 範圍 1–12
- 第 5 欄:星期(Day of Week) — 範圍 0–7(0 和 7 都代表星期日)
格式如下:
分鐘 小時 日期 月份 星期
例如 30 9 * * * 代表每天上午 9 點 30 分執行一次任務。
Cron 語法中的特殊符號
除了填入具體數字外,Cron 還支援幾個常見的特殊符號,讓排程更加靈活:
星號 *(任意值)
代表該欄位的所有可能值。例如在「小時」欄位使用 *,表示每個小時都符合條件。
逗號 ,(列舉多個值)
用來指定多個特定值。例如 1,15 在「日期」欄位表示每月 1 號和 15 號。
連字號 -(範圍)
指定一個連續範圍。例如 1-5 在「星期」欄位表示週一到週五。
斜線 /(間隔)
指定固定間隔。例如 */10 在「分鐘」欄位表示每隔 10 分鐘執行一次。
常見 Cron 表達式範例
以下列出幾個日常開發中最常使用的 Cron 排程範例,幫助你快速上手:
* * * * *— 每分鐘執行一次0 * * * *— 每小時整點執行0 9 * * *— 每天早上 9 點執行0 0 * * *— 每天午夜 12 點執行0 9 * * 1— 每週一上午 9 點執行0 0 1 * *— 每月 1 號午夜執行*/15 * * * *— 每 15 分鐘執行一次0 9-18 * * 1-5— 週一到週五的上午 9 點到下午 6 點,每小時整點執行0 0 1 1 *— 每年 1 月 1 日午夜執行
進階技巧:使用 Cron 時的注意事項
1. 時區問題
Cron 預設使用系統時區。在雲端環境中,伺服器可能設定為 UTC 時區,請務必確認時區設定,避免排程時間與預期不符。
2. 執行時間重疊
如果上一次任務尚未完成,Cron 仍然會啟動新的執行。建議在腳本中加入鎖定機制(如 flock),防止重複執行造成問題。
3. 輸出與日誌
Cron 預設會將輸出以郵件形式發送。建議將輸出重導向至日誌檔案,方便日後除錯:
0 9 * * * /path/to/script.sh >> /var/log/myjob.log 2>&1
4. 環境變數
Cron 執行環境與你的終端機不同,很多環境變數(如 PATH)不會自動載入。建議在腳本開頭明確設定所需的環境變數,或使用絕對路徑呼叫指令。
使用線上工具快速產生 Cron 表達式
手動撰寫 Cron 表達式容易出錯,特別是複雜的排程規則。這時候,一個好用的線上工具可以幫你省下大量時間。
BearHelpers.com 提供免費的 Cron 表達式產生器與驗證工具,讓你透過直覺的介面選擇時間條件,即時預覽下次執行時間,確保你的 Cron 設定完全正確。不需要安裝任何軟體,打開瀏覽器就能使用,非常適合快速測試與學習。
無論你是第一次接觸 Cron 的新手,還是需要快速確認語法的資深開發者,都推薦你到 BearHelpers.com 試試看這些實用的免費工具。
總結
Cron 語法雖然看起來簡短,但蘊含了強大的排程能力。只要掌握五個欄位的含義與特殊符號的用法,你就能輕鬆設定各種自動化任務。記得善用線上工具來驗證你的表達式,避免因為語法錯誤而導致任務沒有如期執行。現在就開始動手練習吧!