對於所有的後端工程師與系統管理員來說,crontab -e 是一個既熟悉又讓人心生敬畏的指令。那五顆看似簡單的星號(* * * * *),決定了資料庫備份、報表產出、快取清理等重要任務的生死。但你真的敢說自己從來沒寫錯過 Cron 語法嗎?
一、為什麼你需要 Cron 語法產生器?告別憑直覺寫排程
Cron 表達式由五個(有時是六個)欄位組成,分別代表:分鐘、小時、日期、月份、星期。這個設計雖然精簡,卻極度違反人類直覺。
舉例來說,你想設定「每個星期一的早上 8 點 30 分」執行一次腳本。直覺上可能會寫成:
* 8 30 * 1 (這是錯的!)
正確寫法其實是:
30 8 * * 1
把分鐘和小時寫反,是新手最常犯的致命錯誤。如果錯把 30 8 寫成 * 8,系統不會在 8:30 執行一次,而是在 8 點的每一分鐘執行一次,連續觸發 60 次,瞬間塞爆你的伺服器資源!這就是為什麼強烈建議使用視覺化的 Cron 排程產生器 來預覽執行結果。
二、最常搞混的符號:逗號、減號與斜線
除了基礎的數字,Cron 還有三個進階符號,掌握它們才能寫出複雜的排程:
| 符號 | 意義 | 範例與白話文 |
|---|---|---|
, (逗號) | 列舉值 | 0 8,20 * * * 每天早上 8 點和晚上 8 點 |
- (減號) | 範圍值 | 0 9-18 * * 1-5 星期一到五的早上 9 點到下午 6 點的整點 |
/ (斜線) | 間隔頻率 | */15 * * * * 每隔 15 分鐘執行一次 |
三、時區問題:排程沒按時執行的隱藏元兇
即使你的 Cron 語法完全正確,任務還是可能在錯誤的時間觸發。這通常是時區設定 (Timezone) 惹的禍。
雲端伺服器(如 AWS、GCP)預設的系統時間通常是 UTC (世界協調時間)。如果你在台灣(UTC+8),想要設定「台灣時間凌晨 2 點」備份資料庫,而直接在伺服器寫入 0 2 * * *,實際執行時間會變成台灣的早上 10 點!
解決方案:在設定 Cron 之前,務必確認伺服器的當前時間與時區。你可以結合 世界時鐘工具 或 Unix 時間戳工具 來進行精確的時區換算,確保排程與你的本地時間一致。
四、資料隱私與安全性:為什麼我們堅持瀏覽器本地運算?
在設定內部系統的自動化排程時,很多時候會涉及到敏感的指令或腳本路徑。我們提供的工具全面採用瀏覽器本地運算 (Client-side rendering) 技術,堅持資料不落地原則。你的排程邏輯、伺服器時區參數等資訊,完全不會傳送到我們的後端伺服器,確保企業機密與系統架構絕對安全。
五、如何將生成的 Cron 寫入系統?
有了正確的表達式後,寫入 Linux 系統只需兩個步驟:
- 在終端機輸入
crontab -e開啟編輯器。 - 貼上你的 Cron 語法與執行的指令路徑,例如:
*/30 * * * * /usr/bin/php /var/www/html/script.php > /dev/null 2>&1
後方的 > /dev/null 2>&1 是將執行輸出的訊息丟棄,避免佔用硬碟空間或觸發不必要的內部郵件通知,這是系統維運的標準實務。
不想再對著螢幕推算時間了嗎?
立即使用 Cron 表達式產生器