为什么 Crontab 表达式总是容易写错?
标准的 Linux Crontab 采用 5 个空格分隔的字段:分 时 日 月 周;而 Java 生态的 Spring `@Scheduled`、Quartz 和 Kubernetes CronJob 常扩展为 6 甚至 7 个字段(增加了开头的秒)。不仅位置容易记反,而且星期表示法(0 还是 7 代表周日)在各系统中不尽相同,手工编写极易引发漏跑或高频惊群事故。
5 字段与 6 字段语法对照
- Linux Crontab:
* * * * *(分钟 0-59, 小时 0-23, 日 1-31, 月 1-12, 星期 0-7) - Spring:
0 * * * * *(秒 0-59, 分钟 0-59, 小时 0-23, 日 1-31, 月 1-12, 星期 1-7)
常用特殊通配符解析
*:代表每一个可能的值。如小时位的 `*` 表示每小时。*/X:步长间隔。如分钟位的 `*/15` 代表每隔 15 分钟触发一次。,:枚举离散值。如星期位的 `1,3,5` 表示周一、周三、周五。-:区间范围。如小时位的 `9-17` 表示工作时间 9 点至 17 点。