tigtools

Cron 表達式說明工具

輸入五欄 cron 排程,查看其含義和下一次執行時間。所有計算都在瀏覽器中進行。

在瀏覽器中執行 免註冊

包含五個欄位:分鐘、小時、日、月份、星期。也支援 @daily 等快捷寫法。

常用排程

說明

每隔 15 分鐘、於 09:00 至 17:59 之間、於星期星期一 到 星期五。

欄位

分鐘
*/15
小時
9-17
日
*
月份
*
星期
1-5
時區

接下來 10 次執行時間

    使用方式

    1. 輸入或貼上 cron 表達式,或選擇常用排程。
    2. 查看白話說明。若欄位無效,系統會指出欄位及原因。
    3. 查看接下來 10 次執行時間,時間會以您的當地時區顯示。若伺服器使用 UTC,請切換至 UTC。
    4. 複製執行時間以便分享,或調整表達式,直到排程符合需求。

    運作方式

    標準 cron 表達式用於 Linux 的 crontab(Vixie cron 和 cronie)以及許多 CI 和主機代管排程器,包含以空格分隔的五個欄位:分鐘(0–59)、小時(0–23)、月份中的日期(1–31)、月份(1–12 或 JAN–DEC)和星期幾(0–7 或 SUN–SAT,其中 0 和 7 都代表星期日)。每個欄位可使用 * 表示每個值、單一值、範圍(例如 1-5)、清單(例如 1,15,30),以及步進值(例如 */15,表示每隔 15 個值;或 9-17/2,表示從 9 到 17 每隔 2 小時)。名稱不區分大小寫。捷徑 @yearly(或 @annually)、@monthly、@weekly、@daily(或 @midnight)和 @hourly 分別代表 0 0 1 1 *、0 0 1 * *、0 0 * * 0、0 0 * * * 和 0 * * * *。

    月份中的日期和星期幾欄位遵循一項常讓人意外的規則。如果任一欄位以 * 開頭,日期就必須同時符合兩個欄位。如果兩個欄位都有限定條件,日期只要符合其中一個即可:0 0 13 * 5 會在每個月的 13 日以及每個星期五執行,不只是在星期五 13 日執行。由於判斷依據是欄位是否以 * 開頭,因此 */2 這類步進值也會視為未限定。此行為符合 Vixie cron 和 cronie;少數其他排程器的行為不同。

    下一次執行時間會依據瀏覽器的時區計算,也可以使用 UTC;大多數伺服器和雲端排程器都使用 UTC。cron 本身使用執行所在機器的時區。夏令時間變更時,實際的 cron 常駐程式處理方式各有不同;本工具會略過時鐘前撥時不存在的當地時間,並將重複的小時列出一次。不支援擴充語法:包含秒或年份的六欄或七欄 Quartz 表達式,以及特殊字元 ?, L, W 和 #。

    範例

    上班時間健康檢查

    */15 9-17 * * 1-5 表示星期一至星期五,09:00 到 17:59 之間每 15 分鐘執行一次。每天最後一次執行時間是 17:45。

    每晚備份

    30 2 * * * 表示每天 02:30 執行。如果伺服器使用 UTC,而您位於紐約,UTC 模式下的下一次執行清單會顯示伺服器實際採用的時間。

    日期欄位的陷阱

    0 9 1 * 1 看起來像是「每月 1 日若為星期一,就在 9:00 執行」,但實際上會在每月 1 日的 09:00 以及每個星期一執行。若要只在每月第一個星期一執行,請設定 0 9 1-7 * *,並在指令碼中檢查星期幾。

    常見問題

    cron 中的 */5 是什麼意思?

    表示從欄位的最小值開始,每隔五個值。例如,在分鐘欄位中,*/5 會在第 0、5、10……55 分執行。在小時欄位中,*/5 會在 0、5、10、15 和 20 點執行,因此從 20:00 到午夜的間隔是四小時,不是五小時。

    為什麼我的工作執行的天數比預期多?

    如果月份中的日期和星期幾欄位都有限定條件,cron 會在符合任一欄位的日期執行。例如,0 0 15 * 1 會在每月 15 日和每個星期一執行。將其中一個欄位設為 *,即可只依另一個欄位判定。

    cron 使用哪個時區?

    cron 常駐程式所在伺服器的系統時區,除非 crontab 設定了 CRON_TZ 或 TZ(cronie 支援)。雲端排程器通常預設使用 UTC。使用 UTC 切換鈕查看 UTC 伺服器會採用的時間。

    可以使用秒或年份欄位嗎?

    標準 cron 不支援,因為它的最小間隔為一分鐘,且只有五個欄位。包含秒和年份的六欄或七欄格式屬於 Quartz、Spring 和類似函式庫,本工具不支援。

    星期日是 0 還是 7?

    兩者都可以。在星期幾欄位中,0 和 7 都代表星期日,1 代表星期一,6 代表星期六。也可以使用 SUN 到 SAT 的三個字母名稱。

    隱私權

    表達式解析和執行時間計算都在瀏覽器中進行。您輸入的內容不會上傳、儲存或納入分析。