Skip to content

排程管理 ​

排程管理

所有帶 Cron 觸發的任務集中在一張表:運算式、下次觸發、上次觸發,以及一個開關。

排程器每分鐘跑一次,而且只在一個節點上跑——多節點部署時是當下持有排程租約的那個,所以一條 Cron 是整個叢集觸發一次,不是每個節點各觸發一次。

每一輪它會比對到期的運算式、回報本機執行器心跳、把沒消息的執行器標記為離線,並清理超過保留期限的建置。所以 * * * * * 就是每分鐘觸發;比這更細的頻率無法表達。

時間表 ​

表格上方有一張時間表:橫軸是時間,一個排程任務一列——也就是觸發方式是排程的任務。手動與推送的任務沒有排程可畫。

  • 在「現在」之前——實際跑過的建置,畫在真正的開始時間與長度上。點下去看那一筆的日誌。
  • 在「現在」之後——Cron 推算出來的下次觸發時刻,長度用該任務近期的平均耗時估。
  • 過去那些淡的——排程該跑、卻沒有建置紀錄的時段。這格其實最有用:任務被暫停、或某個節點當時掛了,不必翻稽核紀錄就看得出來。

已暫停的任務仍留在時間表上,畫成灰的並標示出來——看得到「有一個排程存在但沒在跑」,比整列消失有用得多。Cron 運算式看不懂的話,那一列會標紅,而不是默默畫不出東西。

範圍可選 1、3、7 天;刻度(15 分鐘到 1 天)決定一欄有多寬。時間窗由伺服器決定,從系統時區的 00:00 起算,所以每個人看到的格線是同一套。

讀 Cron 運算式告訴你「應該」會發生什麼,時間表告訴你實際發生了什麼。

運算式 ​

五個欄位——分、時、日、月、週——依系統設定 → 一般設定的時區求值,不是 UTC,也不是瀏覽器的時區。

運算式觸發時機
*/15 * * * *每 15 分鐘
30 2 * * *每日凌晨 2:30
0 18 * * 5每週五 18:00
0 0 1 * *每月 1 號 00:00

未來 24 小時把實際會觸發的時間展開列出。這是週末離開前確認運算式真的照你想的跑最快的方法。

與其他觸發方式的關係 ​

排程只是三種觸發之一,不排斥其他兩種——一個任務可以每晚排程,同時也能手動執行或被推送觸發。暫停任務會一併停掉排程;那一列仍留在表上,開關是關的。

指定給離線執行器的排程建置仍然會被建立,它會在佇列裡等到執行器回來,不會被丟掉。

以 MIT 授權釋出。