常用规则助记
Cron表达式是一个以5或6个空格隔开为6或7个域的字符串
# 结构
左->右:
顺序 | 秒数 | 分钟 | 小时 | 日期 | 月份 | 星期 | 年(可选) |
---|---|---|---|---|---|---|---|
取值 | 0-59 | 0-59 | 0-23 | 1-30(31) | 1-12或JAN-DEC | 1-7或SUN-SAT | 1970-2099 |
特殊字符 | , - * / | , - * / | , - * / | , - * / ? L W C | , - * / | , - * / L # C | , - * / |
每一个域都使用数字,也可出现特殊字符:
字符 | 用途 | 例子 |
---|---|---|
* | 匹配该域的任意值 | 分钟域使用*, 表示每分钟都会触发事件 |
? | 只能用在日期和星期两个域 | 每月的20日触发调度:13 13 15 20 * ? |
- | 范围 | 分钟域使用5-20:从5分到20分钟每分钟触发一次 |
/ | 起始时间开始触发,然后每隔固定时间触发一次 | 分钟域使用5/20:5分钟触发一次,而25,45等分别触发一次 |
, | 列出枚举值 | 分钟域使用5,20:在5和20分每分钟触发一次 |
L | 最后,只能出现在星期和日期域 | 在星期域使用5L:在最后的一个星期四触发 |
W | 有效工作日(周一到周五),只能出现在日期域,在离指定日期的最近的有效工作日触发事件 | 5W:星期六->星期五;星期天->周一 |
LW | 在某个月最后一个工作日 | 最后一个星期五 |
# | 确定每个月第几个星期几,只能出现在日期域 | 6#3:某月的第三个周五 |
注意:在 Cron 表达式中的“日”和“星期”字段同时指定值时,两者为“或”关系,即两者的条件分别均生效
# 示例
- */5 * * * * * * 表示每5秒触发一次
- 0 * * * * ? 每1分钟触发一次
- 0 0 * * * ? 每天每1小时触发一次
- 0 0 10 * * ? 每天10点触发一次
- 0 0 2 1 * * * 表示在每月的1日的凌晨2点触发
- 0 15 10 * * MON-FRI * 表示在周一到周五每天上午10:15触发
- 0 0 10,14,16 * * * * 表示在每天上午10点,下午2点,4点触发
- 0 */30 9-17 * * * * 表示在每天上午9点到下午5点内每半小时触发
- 0 0 12 * * WED * 表示在每个星期三中午12点触发