Cron 表達式解析
用中文說明 cron 排程的意思,逐欄位解釋,並列出指定時區接下來 10 次的執行時間。
5 個欄位:分 時 日 月 星期;6 個欄位時最前面加上秒。
快捷鍵:Ctrl/⌘ + Enter 套用範例
說明
標準 5 欄位格式
欄位說明
| 欄位 | 值 | 意思 | 允許的值 |
|---|---|---|---|
| 分 | 0 | 0 分 | 0–59 |
| 時 | 9 | 9 點 | 0–23 |
| 日 | * | 每天 | 1–31、L(月底) |
| 月 | * | 每個月 | 1–12 或 JAN–DEC |
| 星期 | 1-5 | 星期一到星期五 | 0–7 或 SUN–SAT(0 與 7 都是星期日)、5L、1#2 |
接下來 10 次執行時間
使用說明
- 在「Cron 表達式」輸入排程,例如 0 9 * * 1-5,或從「常用排程」選一個。
- 上方會用一句話說明這個排程的意思,下方的表格逐一解釋每個欄位。
- 選擇時區後,「接下來 10 次執行時間」會列出這個排程在該時區的實際執行時間,並標示距離現在多久。
- 表達式有誤時,欄位下方會指出是哪個欄位、哪個值有問題,以及允許的範圍。
常見問題
我輸入的資料會被上傳嗎?
不會。解析與執行時間的計算都在你的瀏覽器中完成,表達式不會離開你的裝置。
cron 表達式的 5 個欄位分別是什麼?
依序是「分(0–59)、時(0–23)、日(1–31)、月(1–12 或 JAN–DEC)、星期(0–7 或 SUN–SAT,0 與 7 都是星期日)」。* 代表任意值,逗號分隔多個值(1,15),連字號表示範圍(1-5),斜線表示間隔(*/15 是每 15 分鐘)。
6 個欄位的格式是什麼?
6 個欄位時,最前面多一個「秒(0–59)」,例如 */30 * * * * * 是每 30 秒。Spring、Quartz、Node.js 的 node-cron 等排程器支援這種格式;Linux 的 crontab 只支援 5 個欄位。這個工具會依欄位數量自動判斷。
同時指定「日」和「星期」會怎樣?
依照標準 cron 的規則,兩者是「或」的關係:例如 0 0 1 * 1 會在每月 1 日以及每個星期一執行,而不是只在剛好是星期一的 1 日執行。工具偵測到這種情況時會特別提醒。只想限制其中一個時,把另一個設為 * 或 ?。
支援哪些特殊符號?
支援 L(日欄位:每月最後一天)、5L(星期欄位:每月最後一個星期五)、1#2(每月第 2 個星期一)、? (日或星期欄位的「不指定」),以及 @yearly、@monthly、@weekly、@daily、@hourly、@reboot 等簡寫。最接近的工作日(15W)、L-3 與 Jenkins 的 H 目前不支援,會顯示錯誤說明。
時區與日光節約時間怎麼處理?
執行時間以你選擇的時區計算,預設是你裝置的時區。伺服器上的 cron 通常使用伺服器的時區(很多是 UTC),請選擇與伺服器相同的時區來確認。遇到日光節約時間切換時,不存在的時間(例如紐約 3 月某天的 2:30)會順延到切換後的時間。
為什麼說明文字要等一下才出現?
產生說明與計算執行時間的程式比較大,所以在開啟頁面後才另外載入,讓頁面先顯示。載入一次後就會立即更新。