Cron 表達式產生器

以視覺化方式建立 Unix、Quartz、AWS EventBridge 與 GitHub Actions 的 cron 表達式,並即時預覽未來執行時間。

🔒 零網路請求。所有排程都在瀏覽器中產生。
產生的表達式 · Unix 已複製!
0 9 * * *

預覽時間使用您目前瀏覽器的時區。

未來執行時間

未來執行時間

你剛測試了Cron 表達式產生器 — 試試 結構化資料轉換器 →

什麼是 Cron 排程表達式建構器?

Cron 始於 1979 年 Version 7 Unix 中的一個背景程式,現代的 Vixie cron(用在 Linux 發行版、BSD、macOS)標準化了五欄位文法:分鐘、小時、月中日、月份、星期幾。Quartz Scheduler(Java 生態)在前面加了秒欄位(共六個),後面加了年份欄位(最多七個),把星期幾改成 1-7 而非 0-6,並增加了 Unix cron 沒有的 L(最後)、W(工作日)、#(第 N 個工作日)修飾符。AWS EventBridge 使用六欄位排程(類似 Quartz,但如果設定了月中日就必須把星期幾設為 ?,反之亦然),GitHub Actions 則使用 POSIX 五欄位。這個建構器讓你選擇目標方言並在它們之間翻譯。常見語法:*(任何值)、5(字面值)、1-5(範圍)、1,3,5(清單)、*/15(從基數開始的步進)、0,15,30,45(等效的明確清單)。經典陷阱是 0 */6 * * *——讀者以為是每 6 小時從現在開始,但它意思是在 6 的倍數小時的第 0 分鐘,也就是當日的 00:00、06:00、12:00、18:00。如果你在 03:00 重啟服務,下次運行是 06:00,不是 09:00。

如何使用 Cron 排程表達式建構器

選擇目標方言(Unix crontab、Quartz、AWS EventBridge、GitHub Actions)。建構器顯示五個(或六個、七個)欄位,配備 EverySpecific 切換。切換 Every minute / hour / day 以設定 * 語義,或選擇一個值設為字面。使用步進欄位輸入 */N(例如每 15 分鐘 = */15 * * * *)。月中日與星期幾在某些方言中互斥——同時選擇兩者在 Unix cron 中是 OR 邏輯,但在 Quartz / EventBridge 中無效(其中一個必須是 ?)。即時預覽顯示在你的瀏覽器時區中計算的下 5 次排程執行(cron 本身在伺服器的時區執行;時區不匹配是常見失敗原因——你的當地上午 9 點可能是伺服器所在的世界協調時間凌晨 3 點)。複製表達式並貼入你的 crontab、.github/workflows/*.yml、EventBridge 規則或 Quartz JobDetail。表達式也可以連結——URL 雜湊會擷取完整的設定。

為什麼正確的 Cron 排程很重要

0 */6 * * * 不代表每 6 小時。*/6 在小時欄位中表示每個數字能被 6 整除的小時——那是 00、06、12、18,每個日曆日恰好 4 次執行。在 03:00 重啟不會移動排程;下次執行是 06:00。要真正每 6 小時執行一次,使用有狀態的排程器(Quartz cron 觸發器、搭配 OnUnitActiveSec=6h 的 systemd 計時器,或你的 CI 自己的間隔語法)——cron 本身純粹是日曆型且無狀態。另一個經典陷阱是 2 月 30 日——30 14 30 * * 只在有 30 號的月份執行,無聲地跳過 2 月(一年給出 11 次執行而非 12 次)。會自動修正或預先計算下 5-10 次執行的工具可以在兩個陷阱出現前就捕捉它們。AWS 建議使用 EventBridge 的速率表達式(rate(6 hours))來做有狀態的間隔排程,而不是 cron。

常見問題

支援哪些格式?

此工具可輸出 Unix 五欄位 cron,也可為同一排程產生 Quartz、AWS EventBridge 與 GitHub Actions 版本。

預覽時間是本地計算嗎?

是。TeaFun 會根據你選擇的設定,直接在瀏覽器中計算未來執行時間。

可以直接用於 GitHub Actions 嗎?

可以。將格式切換為 GitHub Actions 後,把產生的表達式複製到 workflow schedule 即可。