CRON 表達式

一種排程的時間設定表達式,可以用在 CRON, Hangfire, Coravel。

最近工作需要用到 Hangfire 來作為工作排程器,而裡面關於定期執行工作(recurring)的時間設定是使用 cron expression。對於只用過 Windows 內建工作排程器的我來說可以說是相當陌生,因此來學學怎麼這種表達式的設定方式。

說明

工具型軟體 cron 是一款類Unix的作業系統下的基於時間的任務管理系統。用戶們可以通過 cron
在固定時間、日期、間隔下,運行定期任務(可以是命令和腳本)。

來源:Cron-維基百科

這個表達式其實內含「每次」這個概念,設定的值都是實際執行的日期和時間。

表達式: * * * * *

每個之間要有空格

欄位 分鐘 小時 星期
範圍 0-59 0-23 1-31 1-12或JAN-DEC 0-6或SUN-SAT

除了直接輸入數字外,還可以搭配一些符號使用

  1. * :欄位的所有值。例如分鐘欄位輸入*,代表每分鐘(0-59)都執行。
  2. , :多個指定值。例如小時欄位輸入9,18,代表9點和18點執行。
  3. - :指定範圍。例如日欄位輸入15-20,代表一個月裡的15日至20日都執行。
  4. / :指定增量,開始值/每次增加的量。例如分鐘欄位輸入1/10,代表從1開始,每次10分鐘才再次執行。

練習

  1. 每天08:00:0 8 * * *
  2. 每週一至週五22:30:30 22 * * 1-5
  3. 每週末5分鐘一次:*/5 * * * 0,6
  4. 每個雙數月1日的00:00:0 0 1 */2 *
  5. 每月的15日03:00:0 3 15 * *

可以到這裡驗證和練習 https://crontab.guru/

參考