cron表达式是一种用于指定定时任务执行时间的字符串格式,广泛用于Linux系统的cron作业调度器以及各种编程框架中。
一个标准的CRON表达式由6个或7个字段组成(取决于是否包含年份字段),各字段之间用空格分隔:[秒] [分钟] [小时] [日期] [月份] [星期] [年份] (可选)
各字段的取值范围如下:
字段 | 范围 |
---|---|
秒 | 0-59 |
分钟 | 0-59 |
小时 | 0-23 |
日期 | 1-31 |
月份 | 1-12或JAN-DEC |
星期 | 0-7或SUN-SAT(0和7都表示星期日) |
年份 | (可选)1970-2099 |
常见符号说明:
符号 | 含义 |
---|---|
* | 表示该字段的所有可能值,例如*在分钟字段表示每分钟 |
, | 分隔多个具体的值,例如1,15表示第1分钟和第15分钟 |
- | 定义一个值范围,例如10-15表示从第10分钟到第15分钟 |
/ | 指定增量,例如*/5表示每隔5个单位执行一次 |
? | 用于日期或星期字段,表示不指定明确的值,通常用于其中一个字段时,另一个字段有具体值 |
L | 表示最后一天或最后一个工作日,例如L在日期字段表示每月最后一天。 |
W | 表示最近的工作日,例如15W表示离15号最近的工作日 |
# | 用于星期字段,表示某个月的第几个星期几,例如2#3表示每月的第三个星期二 |
注意:cron表达式的星期和日期不能同时为具体的值,如果同时指定具体的值,可能会导致逻辑冲突或不明确的行为。
示例:
cron表达式 | 含义 |
---|---|
0 30 * * * ? | 每小时第30分钟执行 |
0 0 2 * * ? | 每天凌晨2点执行 |
0 0 8 ? * MON | 每周一的上午8点执行 |
0 0 0 L * ? | 每月的最后一天的午夜执行 |
0 0/5 * * * ? | 每5分钟执行一次 |