文章
关于5位 vs 7位的Cron表达式
1. Cron 表达式长度#
| 类型 | 位数 | 含义 |
|---|---|---|
| 标准 Unix Cron | 5 位 | 分 小时 日 月 星期 |
| Linux 扩展 Cron (Quartz / Node-Cron /一些库) | 6-7 位 | 常见 6 位:秒 分 小时 日 月 星期,7 位可能加年份:秒 分 小时 日 月 星期 年 |
2. 你的两个表达式#
表达式 A#
0 8-23/2 * * * * *
- 7 位:
秒 分 小时 日 月 星期 年(假设是 Quartz 风格) - 含义:
0→ 秒,表示整秒触发8-23/2→ 小时,每隔 2 小时,8~23 点- → 日
- → 月
- → 星期
- → 年
- 执行时间:每天 08:00, 10:00, 12:00, 14:00, 16:00, 18:00, 20:00, 22:00, 24:00(23 点)
表达式 B#
*/20 0-17,22,23 * * *
- 5 位:
分 小时 日 月 星期(标准 Unix Cron) - 含义:
/20→ 每 20 分钟执行一次0-17,22,23→ 小时:0~17 点,以及 22、23 点- → 日
- → 月
- → 星期
- 执行时间:每天 0:00,0:20,0:40,1:00,1:20,...17:40,22:00,22:20,22:40,23:00,23:20,23:40
3. 核心区别#
| 特性 | 表达式 A | 表达式 B |
|---|---|---|
| 位数 | 7 位(秒位在前) | 5 位(没有秒位) |
| 精度 | 精确到秒 | 精确到分钟 |
| 执行频率 | 每 2 小时一次 | 每 20 分钟一次(部分小时) |
| 可控性 | 秒可指定 | 秒固定为 0 |
| 小时范围 | 8~23 点 | 0~17、22、23 点 |
| 使用场景 | Quartz/支持秒的调度 | Unix Cron / Linux 系统任务 |
4. 总结规则上的区别#
- 位数不同 → 精度不同
- 7 位 cron 可以指定秒(更精确)
- 5 位 cron 精度到分钟
- 语法支持不同
- 7 位通常用于 Quartz 或 Node-Cron 等库
- 5 位用于 Unix/Linux 系统 cron
- 执行频率和小时控制方式不同
- A 用
/2表示间隔 - B 用
/20+ 小时列表表示间隔执行
- A 用