Cron 表达式:Linux、Spring、Quartz 与 AWS 的区别
同样是 6 位,Spring 的第一位是秒,AWS 的最后一位是年。先确认使用平台,再输入表达式。
| 平台 | 位数 | 从左到右 | 示例 | 工具 |
|---|---|---|---|---|
| Linux / Unix | 5 | 分 时 日 月 星期 | 0 9 * * MON-FRI | 打开 |
| Spring | 6 | 秒 分 时 日 月 星期 | 0 0 9 * * MON-FRI | 打开 |
| Quartz | 6 / 7 | 秒 分 时 日 月 星期 [年] | 0 0 9 ? * MON-FRI | 打开 |
| AWS EventBridge | 6 | 分 时 日 月 星期 年 | 0 9 ? * MON-FRI * | 打开 |
字段与符号
分为 0–59,时为 0–23,日为 1–31,月为 1–12;秒字段为 0–59。* 表示全部,逗号列举,- 表示范围,/ 表示步长。
Linux 的 */35 * * * * 在每小时第 0、35 分钟执行,并不是固定间隔 35 分钟。需要固定间隔时,应选择目标平台的 interval 或 rate 功能。
跨平台最容易出错的地方
Linux 和 Spring 的星期日为 0 或 7;Quartz 和 AWS 为 1。建议用 MON、FRI 等名称减少误读。Quartz 与 AWS 用 ? 表示不指定某个日期字段,日期与星期需按各自平台规则组合。
Linux 这里只输入时间部分,不含用户名和命令。AWS API 的完整写法为 cron(0 9 ? * MON-FRI *)。
时区与预览
先选部署系统实际使用的时区,再查看预览。EventBridge 传统定时规则采用 UTC,Scheduler 支持指定时区。夏令时切换可能跳过或重复某个本地时刻;预览不能代替实际调度器配置。