開發者工具 · Crontab 產生器
Cron 表達式範例:每小時、每晚、工作日、每月第一天
· 工作原理
規劃任務 範例 調度
十個時間表涵蓋了大多數實際的 crontab。這篇文章給出了每一個的表達方式,解釋了這些欄位,並指出了人們幾乎總是出錯的一個。
您需要“06:00 的第一個月”,但搜尋結果不一致 - 一組經過驗證的帶有推理的表達式
只有當每個位置都合理時,「每月第一天在 06:00」的複製答案才有用。在五個欄位順序中,`0 6 1 * *` 表示零分鐘、六小時、第一個月的某一天、每個月和每個工作日。閱讀這些欄位可以防止有吸引力的範例成為無法解釋的生產依賴性。
這裡的範例保留在 ToolAcre 解析器和測試所使用的語法範圍內。它們是時間表片段,而不是完整的作業定義。瀏覽器可以描述它們並顯示選定區域中未來的候選掛鐘,但它不知道最終可能使用它們的命令、權限或主機。
每分钟、每 5 分钟、每小時 — * * * * *、*/5 * * * * 和 0 * * * *,以及為什么领先的 0 很重要
`* * * * *` 選擇每小時和日期的每分鐘值。 `*/5 * * * *` 透過 55 將分鐘數縮小為 0、5、10 等。 `0 * * * *` 僅選擇零分鐘,在每小時頂部產生一個候選人。因此,前導零是六十分鐘位置與一之間的差值。
所有三種形式都以預設或經過測試的語法出現。步長從分鐘欄位的下限開始擴展,而通配符則擴展從 0 到 59 的每個允許值。使用預覽來嚴格檢查之後的執行情況;不要僅僅因為該工具可以枚舉時間就推斷該工具已開始重複過程。
每天一次,每天兩次 — 30 2 * * * 和 0 6,18 * * *
每日 02:30 為 `30 2 * * *`:分钟 30 和小時 2,日歷欄位不受限制。每天两次,在 06:00 和 18:00 是 `0 6,18 * * *`;逗号組合了两個小時值,而分钟保持固定。當時間列表明確而不是重複為兩行時,兩者都更容易查看。
選取的時區會變更相同掛鐘欄位顯示的時刻。 ToolAcre 將每個候選時間計算為該區域中的本地掛鐘時間,並忽略在向前時鐘變更期間不存在的本地時間。該預覽行為屬於該工具;本文並沒有將其概括為對每個守護程序的承諾。
平日與週末 — 0 8 * * 1-5 和 0 10 * * 0,6,週日警告編號
08:00 的工作日為 `0 8 * * 1-5`,周末早上在 10:00 的為 `0 10 * * 0,6`。此解析器接受星期日作為 0 或 7 並將兩者標準化為相同的值。也支援名稱,因此 `MON-FRI` 可以替換 `1-5` 而無需更改擴展的工作日。
避免同時設定月份中的某一天,除非需要 OR 並集。 `0 8 1 * 1-5` 並不意味著只在第一個工作天。它包括每個月的第一天和每個工作日。只要兩個日期欄位都受到限制,產生器就會發出警告,並在結果句子中放置「或」。
每月、每季度和每年 — 0 6 1 * *、0 6 1 1,4,7,10 * 和 0 0 1 1 *
每月 06:00 第一個是 `0 6 1 * *`。每季一月、四月、七月和十月的第一天是 `0 6 1 1,4,7,10 *`。每年 1 月 1 午夜執行的是 `0 0 1 1 *`,這也是受支持的 `@yearly` 和 `@annually` 別名使用的扩展。
這些範例使用每個選定月份中存在的一天。 ToolAcre 將不可能的組合視為語法上合法的,但會在例如 30 日僅與二月配對時發出警告。二月 29 收到閏年警告。因此,日曆有效性與欄位語法分開顯示,而不是隱藏在一條通用的無效訊息後面。
最後一天的調度無法用支援的五欄位運算子表示
支援的語法沒有最後一天運算符。 `L` 被拒絕而非翻譯,且 31 日無法涵蓋有三十天的月份或二月。該工作簿提出了命令端日期測試,但此儲存庫不執行或驗證命令,因此本文沒有將該解決方法作為受支援的生成器功能提供。
將「每個月的最後一天」視為超出此表達語言的要求。選擇實際目標記錄的調度程序或命令策略,並在那裡進行測試。 ToolAcre 對於該決策周圍的普通五個欄位仍然有用,但驗證成功無法製造其解析器未實現的運算子。
秒欄位和外部運算子被此解析器拒絕
此路線中的經典表達式沒有秒或年位置。拒絕六個欄位,並提供有關面向秒的調度程序樣式的指導。解析器还拒绝 `?`、`#`、`L` 和 `W`,因為其值讀取器僅接受數字、支持的三字母名称、范围、逗号、斜杠和通配符。
因此此處無法表示亞分鐘要求。另一個調度程序的表達式也不能因為看起來相似而被宣告為等效。計算位置、檢查運算子支援並使用目標語法重建預期集合。省略的語意應該保持明確的差距,而不是偶然的近似。
重點:從這十個建置 - 並使用 Crontab 產生器來調整其中一個並讀回結果
當每個標記都有一個原因時,常見的時間表會變得更安全:零表示邊界,逗號命名替代項,範圍包括兩端,星號打開欄位。預設提供了多個起始點,包括每分鐘、一刻鐘、每小時、每天、工作日辦公時間、星期日、每月和每年的形式。
適應最近的預設,讀取產生的句子並在機器的預期區域中掃描接下來的五次。此序列驗證表達式意圖,同時將部署保持在瀏覽器外部。一個好的例子不只可以複製,還可以。它足夠小,以至於另一個審閱者可以重建為什麼每個欄位都在那裡。