简介
Cron 表达式是一种用于设置定时任务的表达方式,通常用于 Unix 系统中的 cron 定时任务调度工具。
它由五个或六个域(字段)组成,具体取决于使用的环境。每个域用 空格 分隔,分别表示如下:
- 分钟(0 - 59)
- 小时(0 - 23)
- 日期(1 - 31)
- 月份(1 - 12 或 JAN - DEC)
- 星期(0 - 7 或 SUN - SAT,其中 0 和 7 均表示星期日)
- (可选)年份
每个域可以使用以下字符来定义复杂的调度模式:
- *:表示所有可能的值。例如,分钟域中的- *表示每一分钟都会触发任务
- ,:用于分隔列表中的多个值。例如:- 1,2,5表示在这些特定的时间点触发任务
- -:用于定义范围。例如:- 1-5表示 1 到 5 之间的每一个时间点
- /:用于指定步长。例如:- */5表示每个 5 个时间点触发一次任务
- ?:仅用于日期和星期字段,表示不指定具体的值。通常用于避免冲突
- L:表示最后一个。例如,在日期域中,- L表示当月的最后一天
- W:表示工作日(周一到周五)最近的日期。例如,- 15W表示最接近 15 号的工作日
- #:用于指定每月的第几个星期几。例如,- 3#2表示每个月的第二个星期三
示例
- 
每天凌晨 1 点执行一次 0 1 * * *
- 
每周一的凌晨 2 点执行一次 0 2 * * 1
- 
每月 1 号和 15 号的凌晨 3 点执行一次 0 3 1,15 * *
- 
每天的每隔 5 分钟执行一次 */5 * * * *
- 
每个工作日(周一到周五)的凌晨 4 点执行一次 0 4 * * 1-5
字段总结
| 字段 | 允许值 | 特殊字符 | 
|---|---|---|
| 分钟 | 0 - 59 | *,-/ | 
| 小时 | 0 - 23 | *,-/ | 
| 日期 | 1 - 31 | *,-/?LW | 
| 月份 | 1 - 12 或 JAN - DEC | *,-/ | 
| 星期 | 0 -7 或 SUN - SAT | *,-/?L# | 
| 年(可选) | 1970 - 2099 | *,-/ | 
Cron 表达式的强大之处在于其灵活性,可以通过组合不同的特殊字符来实现各种复杂的定时任务调度需求。