跳到主要內容

建立並解讀 Cron 表達式

在瀏覽器中以視覺化方式建立 cron 排程,用白話文解讀內容,並預覽任一時區的下次執行時間,支援標準、Quartz 和 AWS 語法。

白話說明

At 09:30, on Monday through Friday

預設範本

視覺化建立

接下來 10 次執行

計算中…

因日光節約時間調整而被跳過的時間不會執行;重複的那個小時只會執行一次。實際的 cron 常駐程式在這方面可能略有差異。

速查表:標準
欄位允許的值
分0–59
時0–23
日期1–31
月1–12 或 JAN–DEC
星期0–7 (0 和 7 = 星期日)或 SUN–SAT
符號意義
*任何值
,清單:1,15 = 1 日和 15 日
-範圍:1-5 = 1 到 5
/間隔:*/15 = 每 15 個單位;5/15 = 5、20、35、50
@daily巨集:@yearly @monthly @weekly @daily @hourly(以及 @reboot)

當日期和星期都有限制時,標準 cron 會在符合其中任一條件的日子執行。

在瀏覽器中執行・不需上傳運作方式

Cron 表達式產生器 使用方法

  1. 1

    選擇語法

    選擇標準 cron、含秒 cron、Quartz 或 AWS EventBridge,也可以直接貼上,由欄位數量自動判斷。

  2. 2

    輸入或建立排程

    輸入表達式、從預設範本開始,或用視覺化編輯器設定各個欄位。

  3. 3

    確認說明

    查看白話說明和標示出來的欄位,確認意思與你想要的一致。

  4. 4

    檢查接下來的執行時間

    選擇時區,確認接下來 10 次執行時間,再複製表達式。

限制與 Pro

免費使用,不需註冊:4 種語法、12 個預設範本,可在 400 多個時區中查看接下來 10 次執行時間,最多往後搜尋 30 年(或到表達式指定的最後一年)。

Pro 方案可移除廣告;建立工具的功能在所有方案中都相同。 查看 Pro

關於 Cron 表達式產生器

Cron 表達式用幾個以空格分隔的欄位來表示排程,只要有一個數字放錯位置,「每個工作日 9 點」就可能變成「9 點的每一分鐘」。這個建立工具讓你輸入或貼上表達式,馬上就能看到白話說明和各欄位的標示,並列出接下來 10 次的執行時間。

工具支援四種語法,因為它們確實不一樣。標準 cron 有五個欄位,依序是分、時、日期、月和星期,crontab、Linux cron、Kubernetes CronJob 和 GitHub Actions 都使用這種格式,也支援 @daily 這類巨集。含秒語法在最前面多一個秒欄位,node-cron 和 croner 就是如此。Quartz 使用六或七個欄位,包含秒和選用的年,星期日為 1,日期與星期其中一欄必須填 ?,還有 L(最後)、W(最近的工作日)和 #(第幾個星期幾)。AWS EventBridge 有六個欄位,最後是年,日期規則與 Quartz 相同,寫法為 cron(…)。貼上表達式時,若欄位數量足以判斷,就會自動切換語法;切換語法時,也會盡可能轉換你現有的內容。

視覺化編輯器可用每/每 N/指定值/範圍來設定各欄位,預設範本涵蓋常見的工作。執行時間可依任何 IANA 時區計算,並處理夏令時間的空檔,EventBridge 規則則依 AWS 的判斷方式預設為 UTC。

本工具只檢查語法和時間,不知道你伺服器的時鐘、機器關機期間錯過的執行,也不了解排程器本身的限制,例如 GitHub 的最短間隔。

隱私

表達式的解析和執行時間的計算都由這個頁面中的程式完成,使用的是瀏覽器內建的時區資料,不會傳送到任何伺服器。你選擇的語法和時區會儲存在本機,下次造訪時沿用。

功能

白話說明

不用再猜 30 9 * * 1-5 的意思,直接顯示「週一到週五的 09:30」。

任何時區的接下來 10 次執行

可用 UTC 或任何 IANA 時區顯示執行時間,並處理夏令時間的變化。

支援 Quartz 與 AWS 語法

為支援的排程器提供秒、年,以及 ?、L、W 和 #。

Cron 表達式產生器:常見問題

為什麼我的工作執行的日子比預期還多?
在標準 cron 中,如果日期和星期兩個欄位都有限制,只要其中一個符合就會執行。所以 0 9 13 * 5 會在每月 13 日和每個星期五執行,而不是只有 13 日又是星期五的那天。這裡的說明會明確寫出。Quartz 和 AWS 則要求其中一欄填 ?,避免這種歧義。
Cron 表達式中的 */15 是什麼意思?
斜線代表間隔:分鐘欄位的 */15 表示從 0 開始每 15 分鐘一次,也就是 :00、:15、:30 和 :45。加上起始值就會位移:5/15 會在 :05、:20、:35 和 :50 執行。搭配範圍時,時欄位的 9-17/2 表示 9 到 17 點之間每兩小時一次。
Cron 使用哪個時區?
傳統 cron 常駐程式使用伺服器的本地時區,除非 crontab 設定了 CRON_TZ 或 TZ。Kubernetes CronJob 預設使用控制器的時區,但可設定 timeZone 欄位;GitHub Actions 排程使用 UTC;EventBridge 規則一律使用 UTC,EventBridge Scheduler 則可選擇時區。請在這裡選擇相符的時區來預覽實際的執行時間。
遇到夏令時間切換時會怎麼樣?
時鐘往前調時,被跳過的那一小時並不存在;往後調時,則有一小時會出現兩次。這個預覽會略過不存在的時間,重複的時間只執行一次。實際的常駐程式各有不同:Vixie cron 和 cronie 會嘗試補跑被跳過的工作,因此排在當地時間 01:00 到 03:00 的工作,建議改用 UTC,或查閱你的排程器文件。
如何把 crontab 的一行轉成 Quartz 或 AWS 格式?
從清單中選擇新的語法,表達式就會自動轉換:Quartz 會加上秒欄位,AWS 會加上年欄位,星期數字從 0 到 6 改為 1 到 7,並在沒用到的日期欄位填入 ?。如果原本同時指定了日期和星期,會提示你目標語法無法表達這種組合。