Cron表達式是一個字符串,字符串以空格隔開,分爲7個域,每個域表明一個含義。
語法 : 秒 分 時 日 月 年 星期 年code
各個域可出現的值:事件
域 | 有效值 | 有效字符 |
---|---|---|
秒 | 0-59 | , - * / |
分 | 0-59 | , - * / |
時 | 0-23 | , - * / |
日 | 0-31 | ,- * ? / L W C |
月 | 1-12的整數或者 JAN-DEC | , - * / |
星期 | 1-7的整數或者 SUN-SAT | ,- * ? / L C # |
年 | 1970-2099 | , - * / |
1.數值表示具體的時間點字符串
注意星期的 1表示週日,2表示週一,以此類推table
例如:
cron="30 10 1 20 10 ? 2011" 表示 2011年10月20號1點10分30秒觸發任務class
2.特殊字符含義以下語法
* 表示任意時間
tab
例如
cron="30 * * * * ? *"
表示每30秒觸發一次時間
- 表示範圍
co
例如
cron="15-45 * * * * ? *"
表示15到45秒內,每秒都觸發任務header
/ 表示開始觸發且間隔多久觸發
例如
cron="0 5 2/5 * * ? *"
表示2:05分觸發任務,每隔5小時觸發一次
, 表示全部觸發的時間點
例如
cron="5 5,15,25 * * * ?" 表示5:05,15:05,25:05觸發任務
? 表示忽略該域
只能做用於日和星期上,由於這兩個是互相影響的,指定了一個,另外一個能夠寫?
例如
cron="5 5 * 10 * ? *" 表示任意月的10號任意小時5分5秒時候觸發,無論星期幾
若是把?換成 *
則表示 每小時5分5秒觸發一次,10號就不起做用了
L 表示最後一個
只能做用於日和星期上,表示最後一天,最後一個星期幾。
W 表示工做日
只能做用在日期域上,系統將在離指定日期的最近的有效工做日觸發事件。
# 用於肯定每月第幾個星期幾
只能出如今DayofMonth域。
例如
4#2,表示某月的第二個星期三
"30 * * * * ?" 每半分鐘觸發任務 "30 10 * * * ?" 每小時的10分30秒觸發任務 "30 10 1 * * ?" 天天1點10分30秒觸發任務 "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秒觸發任務