Cron表達式是設置定時任務執行時間的一種字符串格式,就像給鬧鐘定鈴一樣,你可以用它精確地告訴計算機任務在什麼時候執行。下面我將用一個清晰的表格和通俗的語言帶你快速入門。

⏰ Cron 表達式的基本結構

一個標準的Cron表達式由6個或7個字段組成,中間用空格隔開,它們分別代表不同的時間單位。最常見的格式包含以下6個字段,順序是固定的,絕對不能錯:

字段順序

含義

取值範圍

允許的特殊字符

1

0-59

, - * /

2

分鐘

0-59

, - * /

3

小時

0-23

, - * /

4

(月份中的第幾天)

1-31

, - * / ? L W

5

1-12 或 JAN-DEC

, - * /

6

星期幾

1-7 或 SUN-SAT (注意:1可能是週日或週一,需根據系統確認)

, - * / ? L #

你可以這樣簡單記憶這個順序:秒、分、時、日、月、周

🔑 理解特殊字符的“密碼”

Cron表達式的強大之處在於它使用了一些特殊字符來表示複雜的規則。下表是幾個最常用的字符:

特殊字符

含義

舉例説明

*

任意值(每)

在“分鐘”字段用 * 表示“每分鐘”都執行。

,

多個值(或)

在“小時”字段用 8,12,18 表示在早上8點、中午12點、晚上6點執行。

-

範圍(從…到…)

在“星期”字段用 1-5 表示從週一到週五。

/

步長(每隔)

在“分鐘”字段用 */10 表示“每隔10分鐘”執行一次。

?

不指定

用於“日”或“星期”字段,當你指定了其中一個字段的值時,另一個通常用 ? 表示不關心,以避免規則衝突。例如,想每週五執行,那麼“日”字段就用 ?

L

最後

在“日”字段用 L 表示當月的最後一天。

💡 來看看實際的例子

光説不練假把式,結合上面表格中的字符,我們來看一些常見的例子:

需求場景

Cron 表達式

解釋

每天中午12點執行

0 0 12 * * ?

第0秒、第0分鐘、12點、日期和星期不限制。

每週一到週五上午9點半執行

0 30 9 ? * MON-FRI

第0秒、30分、9點、日期不指定(?)、每週一到週五。

每月1號凌晨1點執行

0 0 1 1 * ?

第0秒、0分、1點、1號、星期不指定(?)。

每隔5分鐘執行一次

0 */5 * * * ?

第0秒、從0分開始每隔5分鐘、日期和星期不限制。

每天上午9點到下午5點間每半小時執行

0 0/30 9-17 * * ?

第0秒、從0分開始每30分鐘、在9點到17點之間。

每月最後一個星期五晚上10點執行

0 0 22 ? * 6L

第0秒、0分、22點、日期不指定(?)、每月的最後一個星期五(6L)。

⚠️ 給新手的幾個小提示

  1. 注意星期字段的差異:不同的系統對“星期幾”的設定可能不同。有的系統認為 1 是星期日,有的認為是星期一。在使用前,最好確認你所用系統的規定。
  2. 避免日和周衝突:在一條表達式裏,“日期”和“星期幾”字段最好不要同時設置具體值(可以用 ? 忽略其中一個),否則可能會產生意想不到的衝突。
  3. 先測試再使用:在將表達式應用到重要任務之前,可以先用一些在線的Cron表達式生成器或驗證工具模擬一下,看看它未來的執行時間是否符合你的預期。