1. cron
表達式格式:
{秒數} {分鍾} {小時} {日期} {月份} {星期} {年份(可為空)}
“*”
字符代表所有可能的值。“*”
在{月份}
里表示每個月的含義。-
“/”
字符用來指定數值的增量。
在{分鍾}
里的“0/15”
表示從第0分鍾開始,每15分鍾。
在{分鍾}
里的“3/20”
表示從第3分鍾開始,每20分鍾(它和“3,23,43”)的含義一樣。 -
“L”
字符僅被用於{日期}
和{星期}
,它是單詞“last”
的縮寫。
在{日期}
,“L”表示一個月的最后一天。
在{星期}
,“L”表示一個星期的最后一天,也就是SAT
。 - 如果在
“L”
前有具體的內容,它就具有其他的含義了。
“6L”
表示這個月的倒數第6天,“FRIL”
表示這個月的最一個星期五。
注意:在使用“L”參數時,不要指定列表或范圍, - 由於
{日期}
和{星期}
這兩個元素互斥的, 其中之一被指定了值以后, 必須要對另一個設為”?”
。
2. cron
表達式各占位符解釋:
-
{秒數}{分鍾} ==> 允許值范圍: 0~59 ,不允許為空值。
-
“*”
代表每隔1秒鍾觸發。 -
“,”
代表在指定的秒數觸發。比如”0,15,45”
代表0秒、15秒和45秒
時觸發任務。 -
“-“
代表在指定的范圍內觸發,比如”25-45”
代表從25秒開始觸發到45秒結束
觸發,每隔1秒觸發1次。 -
{小時} ==> 允許值范圍: 0~23 ,不允許為空值,若值不合法。占位符和秒數一樣。
-
{日期} ==> 允許值范圍: 1~31 ,不允許為空值。
-
{月份} ==> 允許值范圍: 0~11
-
{星期} ==> 允許值范圍: 1~7 (或 SUN,MON,TUE,WED,THU,FRI,SAT), 1代表星期天(SUN),以此類推,7代表星期六(SAT),不允許為空值。
-
{年份} ==> 允許值范圍: 1970~2099 ,允許為空。
3. 經典案例
“30 * * * * ?”
每半分鍾觸發任務
“30 10 * * * ?”
每小時的10分30秒觸發任務
“30 10 1 * * ?”
每天1點10分30秒觸發任務
“0 0 10,14,16 * * ?”
每天上午10點,下午2點,4點
“0 0/30 9-17 * * ?”
朝九晚五工作時間內每半小時
“0 * 14 * * ?”
在每天下午2點到下午2:59期間的每1分鍾觸發
“0 0/5 14 * * ?”
在每天下午2點到下午2:55期間的每5分鍾觸發
“0 0/5 14,18 * * ?”
在每天下午2點到2:55期間和下午6點到6:55期間的每5分鍾觸發
“0 0-5 14 * * ?”
在每天下午2點到下午2:05期間的每1分鍾觸發
“30 10 1 20 * ?”
每月20號1點10分30秒觸發任務
“30 10 1 20 10 ? *”
每年10月20號1點10分30秒觸發任務
“30 10 1 20 10 ? 2011”
2011年10月20號1點10分30秒觸發任務
“30 10 1 ? 10 * 2011”
2011年10月每天1點10分30秒觸發任務
“30 10 1 ? 10 SUN 2011”
2011年10月每周日1點10分30秒觸發任務
“15,30,45 * * * * ?”
每15秒,30秒,45秒時觸發任務
“15-45 * * * * ?”
15到45秒內,每秒都觸發任務
“15/5 * * * * ?”
每分鍾的每15秒開始觸發,每隔5秒觸發一次
“15-30/5 * * * * ?”
每分鍾的15秒到30秒之間開始觸發,每隔5秒觸發一次
“0 0/3 * * * ?”
每小時的第0分0秒開始,每三分鍾觸發一次
“0 15 10 ? * MON-FRI”
星期一到星期五的10點15分0秒觸發任務
“0 15 10 L * ?”
每個月最后一天的10點15分0秒觸發任務
“0 15 10 LW * ?”
每個月最后一個工作日的10點15分0秒觸發任務
“0 15 10 ? * 5L”
每個月最后一個星期四的10點15分0秒觸發任務
“0 15 10 ? * 5#3”
每個月第三周的星期四的10點15分0秒觸發任務
舉幾個例子:
每隔5秒執行一次:"*/5 * * * * ?"
每隔1分鍾執行一次:"0 */1 * * * ?"
每天23點執行一次:"0 0 23 * * ?"
每天凌晨1點執行一次:"0 0 1 * * ?"
每月1號凌晨1點執行一次:"0 0 1 1 * ?"
每月最后一天23點執行一次:"0 0 23 L * ?"
每周星期天凌晨1點實行一次:"0 0 1 ? * L"
在26分、29分、33分執行一次:"0 26,29,33 * * * ?"
每天的0點、13點、18點、21點都執行一次:"0 0 0,13,18,21 * * ?"
表示在每月的1日的凌晨2點調度任務:"0 0 2 1 * ? *"
表示周一到周五每天上午10:15執行作業:"0 15 10 ? * MON-FRI"
表示2002-2006年的每個月的最后一個星期五上午10:15執行:"0 15 10 ? 6L 2002-2006"