Crontab 產生器
輸入 cron 運算式,即時以白話文看懂它的意思,或從常用範本開始再加以調整。所有運算都在您的瀏覽器中進行 — 不會上傳任何內容。
如何使用 crontab 產生器
- 輸入 cron 運算式,或點選範本從常用排程開始。
- 查看隨輸入即時更新的白話文說明。
- 將運算式複製到您的 crontab、CI 設定檔或排程器中。
關於 cron 運算式
cron 是類 Unix 系統上以時間為基礎的工作排程器,CI 流程、容器排程器和許多雲端服務也都採用相同的五欄位語法。每個欄位控制一個時間單位,而特殊字元 — *(每一個)、範圍、/間隔和 ,清單 — 互相組合,就能表達從「每分鐘」到「平日 09:00」的各種排程。
由於語法相當精簡,一個小錯誤就會悄悄改變工作的執行時機。本工具會將運算式轉換成一句話,讓您在部署前確認它確實符合您的意圖。它完全在您的瀏覽器中於本機解析,因此您的排程絕不會離開您的裝置。
即使是經驗豐富的使用者,也可能會遇到這兩個小問題。首先,當您同時限制「月份中的某一天」和「星期幾」時(例如,設定為「0 0 1 * 1」),大多數的 cron 程式會判斷只要任一欄位符合條件,就會執行任務,因此任務會在每月的 1 日和每週一執行,而不僅僅是在每週一的 1 日執行。其次,星期日可以寫成 0 或 7;大多數的 cron 程式都接受這兩種寫法,但請選擇其中一種,並保持一致,這樣您的排程才會易於閱讀。
Cron 表達式並未提及時區——排程會以主機或服務所使用的時區執行,而 CI 平台通常預設為 UTC。如果您的「0 9 * * 1-5」排程報告在錯誤的時間出現,通常就是這個原因。夏令時間的轉換會增加更多複雜性:在當地時間凌晨 1 點到 3 點之間排程的任務,可能會在轉換時跳過或執行兩次,因此請將重要的任務安排在該時間範圍之外,或是在以 UTC 為基礎的主機上執行。
常見問題
什麼是 cron 運算式?
cron 運算式由五個欄位組成 — 分鐘、小時、日(每月第幾天)、月份和星期 — 用來定義類 Unix 系統上排程工作(即「cron job」)的重複排程。
如何解讀一行 crontab?
將它貼到上方,工具就會以白話文描述它的意思,例如「30 9 * * 1-5」會變成「於上午 09:30,週一至週五」。常用排程可直接使用範本。
支援範圍、間隔與清單嗎?
支援 — 範圍(1-5)、間隔(*/15)、清單(1,15,30)和名稱(JAN、MON)都能解讀並加以說明。
會上傳任何內容嗎?
不會。運算式完全在您的瀏覽器中解析,不會傳送任何內容到伺服器。
為什麼我的排程任務會每分鐘執行一次,而不是一次?
幾乎總是因為「分鐘」欄位仍然是星號。星號表示「每一」,因此「* 9 * *」會匹配 9 點時段的每一分鐘——也就是六十次;而「0 9 * *」則會在 09:00 執行一次。將您的表達式貼到上方,並閱讀說明:如果它以「每一分鐘」開頭,請將「分鐘」欄位設定為特定值。