1. 程式人生 > >Cron表示式的生成規則-個人理解

Cron表示式的生成規則-個人理解

一、明確每個位置代表的含義:
從左至右,依次表示:
   秒   分   時   日   月   周    年
萬用字元一般使用‘*’,也可使用‘_’或者‘/’,周的位置一般用‘?’


二、生成規則:
2.1、從x時間開始,每隔y時間執行一次,則在對應的位置上寫上:x/y;
例:

  • 從0分鐘開始,每5分鐘執行一次,表示式為:0 0/5 * * * ? *

  • 從上午10點開始,每3個小時執行一次,表示式為:0 0 10/3 * * ? *


2.2、定點執行,在對應的位置上寫上對應的數值即可。
例:

  • 每天5點定時執行一次,表示式為:0 0 5 * * ? *
  • 在每個小時的25分執行一次,表示式為:0 25 * * * ? *

2.3、從x時間到y時間段執行,在對應的位置上寫上:x-y。
例:

  • 每天上午11點到下午2點執行,表示式為:0 0 11-14 * * ? *

  • 每個小時的15分到30分執行,表示式為:0 15-30 * * * ? *


2.4、指定時間點執行。
這種情況很簡單,只需要在對應的位置寫上你要執行時間的時間點,用英文逗號(,)分割開就可以了,這裡不再舉例說明了。


可根據實際情況進行組合。
例:

  • 每天上午11點15-11點45分執行,表示式為:0 15-45 11 * * ? *

  • 每天上午10點到下午3點,從15分中開始,每30分鐘執行一次,表示式為:0 15/30 10-15 * * ? *


注:
1、在沒有指定的位置上,前面的位置以0代替,後面的位置以萬用字元代替。
反例:從15分開始,每30分鐘執行一次。 * 15/30 * * * ? *
此時因為秒的位置是萬用字元,會理解為任意秒都可以執行,與預期的不符合。


2、針對生成規則2.1,執行的時間是以後面的為基準的。
例: * 15/25 10-23 * * ? *
當前時間假設為16:20,則前5次的執行時間為:
16:40:00
17:15:00
17:40:00
18:15:00
18:40:00
表示式的含義為:每天10點到23點,從每點的15分開始,每25分鐘執行一次。
因為當前時間為16:20,所以第一次執行時間會從16點15分開始算起,由於已經過了16:15,所以往後推算25分鐘,是16:40,所以,第一次執行時間是16:40。
有人可能會以為第二次執行的時間會是17:05。這樣算是不對的。因為16:40往後推算25分鐘超過了17點,所以下一次的應該是以17點算起,從17點15開始執行第二次。依次類推。這就是“以後面的為基準”的意思。

以上內容僅代表個人理解,如有不對,可在評論區指出,共同進步!


個人整理了一份PDF文件,如果感覺不錯的話,可以下載下來支援一下!
Cron表示式生成規則