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秒触发任务