XXL-Job 定时任务的 Cron 表达式解析
XXL-Job 框架使用的 Cron 表达式由七个字段组成,用于定义任务的执行调度。这些字段依次代表:秒、分、时、日、月、星期、年(可选)。
秒 分 时 日 月 周 年(可选)
*/5 * * * * ?
各个字段的取值范围和允许的特殊字符如下:
- 秒:0-59,支持 `,`, `-`, `*`, `/`
- 分:0-59,支持 `,`, `-`, `*`, `/`
- 时:0-23,支持 `,`, `-`, `*`, `/`
- 日:1-31,支持 `,`, `-`, `*`, `?`, `/`, `L`, `W`, `C`
- 月:1-12 或 JAN-DEC,支持 `,`, `-`, `*`, `/`
- 周:1-7 (1 代表周日) 或 SUN-SAT,支持 `,`, `-`, `*`, `?`, `/`, `L`, `C`, `#`
- 年:1970-2099,支持 `,`, `-`, `*`, `/` (此字段可选,留空表示不限制)
特殊字符详解:
*:匹配所有可能的值。?:表示不指定值,通常用于日或周字段,当其中一个已指定其他字段时使用。-:指定一个范围,例如 `10-20` 表示从10到20。,:分隔多个可能的值,例如 `MON,WED,FRI` 表示周一、周三、周五。/:用于增量赋值,例如 `*/5` 在秒字段表示每隔5秒执行一次,在分字段表示每隔5分钟执行一次。L:表示一个范围内的最后一天或最后一个工作日,或最后一个星期几。W:指定一个工作日(周一到周五)。C:表示计算。#:用于指定月份中的第几周的星期几,例如 `6#3` 表示该月的第三个星期五。
以下是一些 Cron 表达式的常见示例:
// 示例 1: 每隔5秒执行一次
*/5 * * * * ?
// 示例 2: 每隔1分钟执行一次
0 */1 * * * ?
// 示例 3: 每天的5点到15点整点触发
0 0 5-15 * * ?
// 示例 4: 每三分钟触发一次
0 0/3 * * * ?
// 示例 5: 每天下午2点到2点05分之间的每1分钟触发
0 0-5 14 * * ?
// 示例 6: 每天下午2点到2点55分之间的每5分钟触发
0 0/5 14 * * ?
// 示例 7: 每天下午2点到2点55分以及下午6点到6点55分之间的每5分钟触发
0 0/5 14,18 * * ?
// 示例 8: 工作日(9点到17点)期间,每半小时触发一次
0 0/30 9-17 * * ?
// 示例 9: 每天的上午10点、下午2点、下午4点触发
0 0 10,14,16 * * ?
// 示例 10: 每周三中午12点触发
0 0 12 ? * WED
// 示例 11: 每周二、四、六下午五点触发
0 0 17 ? * TUES,THUR,SAT
// 示例 12: 每年三月的星期三,下午2点10分和2点44分触发
0 10,44 14 ? 3 WED
// 示例 13: 周一至周五的上午10点15分触发
0 15 10 ? * MON-FRI
// 示例 14: 每月最后一天23点触发
0 0 23 L * ?
// 示例 15: 每月最后一日的上午10点15分触发
0 15 10 L * ?
// 示例 16: 每月的最后一个星期五上午10点15分触发
0 15 10 ? * 6L
// 示例 17: 2005年,每天上午10点15分触发
0 15 10 * * ? 2005
// 示例 18: 2002年至2005年,每月的最后一个星期五上午10点15分触发
0 15 10 ? * 6L 2002-2005
// 示例 19: 每月的第三个星期五上午10点15分触发
0 15 10 ? * 6#3
// 示例 20: 每半分钟触发任务 (注意:XXL-Job 的秒字段是必需的)
30 * * * * ?
// 示例 21: 每小时的10分30秒触发任务
30 10 * * * ?
// 示例 22: 每天1点10分30秒触发任务
30 10 1 * * ?
// 示例 23: 每月20号1点10分30秒触发任务
30 10 1 20 * ?
// 示例 24: 每年10月20号1点10分30秒触发任务
30 10 1 20 10 ? *
// 示例 25: 2011年10月20号1点10分30秒触发任务
30 10 1 20 10 ? 2011
// 示例 26: 2011年10月,每天1点10分30秒触发任务
30 10 1 ? 10 * 2011
// 示例 27: 2011年10月,每周日1点10分30秒触发任务
30 10 1 ? 10 SUN 2011
// 示例 28: 每15秒、30秒、45秒时触发任务
15,30,45 * * * * ?
// 示例 29: 15秒到45秒之间,每秒都触发任务
15-45 * * * * ?
// 示例 30: 每分钟的第15秒开始,每隔5秒触发一次
15/5 * * * * ?
// 示例 31: 每分钟的15秒到30秒之间,每隔5秒触发一次
15-30/5 * * * * ?
// 示例 32: 每小时的第0分0秒开始,每三分钟触发一次
0 0/3 * * * ?
// 示例 33: 星期一到星期五的10点15分0秒触发任务
0 15 10 ? * MON-FRI
// 示例 34: 每个月最后一天的10点15分0秒触发任务
0 15 10 L * ?
// 示例 35: 每个月最后一个工作日的10点15分0秒触发任务
0 15 10 LW * ?
// 示例 36: 每个月最后一个星期四的10点15分0秒触发任务
0 15 10 ? * 5L
// 示例 37: 每个月第三周的星期四的10点15分0秒触发任务
0 15 10 ? * 5#3
您可以使用在线 Cron 表达式生成器来辅助创建和验证您的表达式:http://cron.qqe2.com/