Cron 運算式計算機
輸入標準的 5 欄位 cron 運算式(cronie 方言)與起始日期時間,即可查看工作接下來何時執行。
這是哪一種 cron
本計算機讀取的是 Linux crontab 使用的標準 5 欄位 cron 運算式,並遵循 cronie 的行為。它不是其他 cron 方言的計算機。特別是,Quartz 風格的運算式(含秒與年的 6 或 7 個欄位,以及 ? L W # 字元)並不相同,不受支援。AWS EventBridge、Kubernetes CronJob 與 systemd timer 等排程器有各自的語法或時區設定,同樣不在處理範圍內。
| 欄位 | 範圍 | 寫法 |
|---|---|---|
| 分 | 0–59 | *、數字、1,15(清單)、10-20(範圍)、*/15 或 0-30/10(間隔) |
| 時 | 0–23 | 相同 |
| 日 | 1–31 | 相同 |
| 月 | 1–12 | 相同。名稱(jan 至 dec,不分大小寫)也可使用,可用於清單與範圍 |
| 星期 | 0–7 | 相同。名稱(sun 至 sat)也可使用。0 和 7 都代表星期日 |
@yearly(@annually)=0 0 1 1 *、@monthly=0 0 1 * *、@weekly=0 0 * * 0、@daily=0 0 * * *、@hourly=0 * * * *。本計算機也接受將@midnight視為@daily。- 以 0 結尾的星期範圍(
5-0)會被視為以 7 結尾(星期五、星期六、星期日)。 - 當間隔大於範圍時(例如小時欄位中的
*/23),只會使用第一個值,以及間隔能到達的值(*/23= 0 時與 23 時)。
日與星期:OR 與 AND
「日」欄位與「星期」欄位如何搭配運作,是由 cron 的實作(cronie)決定的。
- 如果兩個欄位都不是以
*開頭,工作會在符合任一個的日子執行(OR)。30 4 1,15 * 5會在每月 1 日和 15 日的 4:30 執行,而且每週五也會執行。 - 如果任一個欄位以
*開頭,工作會在兩者都符合的日子執行(AND)。以*開頭的欄位視為「無限制」。 *與*/2視為相同,因為兩者都以*開頭。只有展開後的值不同(*/2是奇數日 1、3、5 等)。0 0 */2 * 1= 奇數日 AND 星期一0 0 1-31/2 * 1= 奇數日 OR 星期一(1-31/2不是以*開頭)
- 結果會顯示適用的是 OR 還是 AND。
搜尋的範圍有多遠
從您輸入的日期與時間之後開始,計算機會逐日檢查最多 10 年(但不會超過 2100 年 12 月 31 日)。像 2 月 29 日這種每隔幾年才執行一次的運算式,只要在 10 年內會執行就找得到。如果 10 年內都沒有執行(例如日期根本不存在),結果會這麼說明。起始時間本身不包含在內(搜尋的是它「之後」的時間)。
不支援的語法
若輸入以下任一種,計算機會說明為什麼無法讀取。
- 6 或 7 個欄位的運算式(如 Quartz 中的秒或年欄位)
?、L、W與#(Quartz 語法)@reboot(啟動時執行一次的工作,因此沒有執行時間)~(cronie 的隨機值)與CRON_TZ(每個 crontab 的時區)- 以單一起始值為基礎的間隔,例如
5/15
時區與日光節約時間
您輸入的日期與時間會以年、月、日、時、分的形式直接使用。不計算時區轉換與日光節約時間,因此結果可能與 cron 在您系統上實際的行為不同。依據 cronie 手冊(2026 年 10 月 28 日查證),因日光節約時間變更而不存在的時段中的工作不會執行,出現兩次的時段中的工作則會執行兩次。其他 cron 實作的處理方式不同。
範例
*/15 9-17 * * 1-5在平日的 9:00 至 17:59 每 15 分鐘執行一次0 9 * * 1在每個星期一的 9:00 執行0 0 1 * *在每月 1 日的 0:00 執行(與@monthly相同)0 0 * * 0與0 0 * * 7都在每個星期日的 0:00 執行30 4 1,15 * 5在 1 日、15 日以及每週五的 4:30 執行(OR)0 0 29 2 *在閏年的 2 月 29 日 0:00 執行(下一次可能要等好幾年)0 0 31 2 *永遠不會執行,因為 2 月 31 日不存在(10 年內找不到任何結果)
來源與查證日期
語法與行為已於 2026 年 10 月 28 日,對照 cronie 的原始碼(entry.c 與 cron.c)與 cronie 的 crontab(5) 手冊(GitHub 上的 cronie)查證。針對這個英文頁面,也於 2026 年 10 月 31 日開啟了 man7.org 上的 crontab(5) 手冊頁(即 cronie 的手冊)。其中列出五個欄位及其範圍、月份與星期的名稱(前三個字母,不分大小寫,可用於清單與範圍)、兩個日欄位都不含 * 時的 OR 行為,以及 @reboot、@yearly、@annually、@monthly、@weekly、@daily 與 @hourly 簡寫。該手冊頁並未列出 @midnight,也未說明 AND 行為;這兩點來自 cronie 原始碼。其他 cron 實作的差異並未查證。
常見問題
如果同時設定「日」與「星期」會怎樣?
如果兩個欄位都不是以 * 開頭,工作會在符合任一個的日子執行(OR)。如果任一個欄位以 * 開頭(包含 */2),則會在兩者都符合的日子執行(AND)。
星期欄位的 0 和 7 有什麼差別?
沒有差別。兩者都代表星期日。
結果會與我的 cron 實際執行的不同嗎?
會。本計算機直接使用您輸入的日期與時間,不計算時區或日光節約時間。cronie 以外的 cron 實作行為也可能不同。
為什麼超過 10 年就沒有結果?
搜尋會在起始日期時間之後 10 年停止。像 2 月 31 日這種不存在的日期的運算式,永遠不會執行。