Cron 表达式解析器
在线解析 Linux/Unix crontab 使用的五段 Cron 表达式,实时校验字段并计算指定时区下未来 10 次执行时间。
表达式与时区
解析结果
未来 10 次执行时间
Linux/Unix Cron 五段格式
Cron 表达式是一组描述定时任务执行时间的字段。Linux/Unix crontab 通常使用五段格式,依次为分钟、小时、日期、月份和星期。
* * * * *
│ │ │ │ └─ 星期(0-7,0 和 7 都表示星期日)
│ │ │ └─── 月份(1-12 或 JAN-DEC)
│ │ └───── 日期(1-31)
│ └─────── 小时(0-23)
└───────── 分钟(0-59)
| 字段 | 允许值 | 示例 |
|---|---|---|
| 分钟 | 0-59 | */5 表示每 5 分钟 |
| 小时 | 0-23 | 9-17 表示 9 时至 17 时 |
| 日期 | 1-31 | 1,15 表示每月 1 日和 15 日 |
| 月份 | 1-12 或 JAN-DEC | JAN-MAR 表示一月至三月 |
| 星期 | 0-7 或 SUN-SAT | MON-FRI 表示星期一至星期五 |
Cron 特殊字符与常用表达式
| 写法 | 含义 | 完整示例 |
|---|---|---|
* | 匹配任意值 | * * * * * 每分钟执行 |
, | 列出多个值 | 0,30 * * * * 每小时的 0 分和 30 分执行 |
- | 指定连续范围 | 0 9-17 * * * 每天 9 时至 17 时整点执行 |
/ | 指定步长 | */10 * * * * 每 10 分钟执行 |
0 9 * * MON-FRI | 工作日定时 | 星期一至星期五 09:00 执行 |
0 0 1 * * | 每月定时 | 每月 1 日 00:00 执行 |
@daily | 常用宏 | 等价于 0 0 * * * |
@reboot | 启动宏 | 系统启动时执行,无法预测具体时间 |
Linux Cron 与 Quartz Cron 有什么区别?
本工具只解析 Linux/Unix 常用的五段 Cron 表达式。Quartz 和 Spring Cron 通常包含秒字段,并支持 ?、L、W、# 等扩展,不能直接与五段表达式混用。
| 类型 | 字段数 | 秒字段 | 高级字符 |
|---|---|---|---|
| Linux/Unix Cron | 5 | 不支持 | 不支持 ? L W # |
| Quartz/Spring Cron | 6 或 7 | 支持 | 支持 ? L W # |
使用 Cron 表达式时需要注意什么?
- 日期和星期同时受限时,Vixie Cron 按“日期或星期满足其一”执行,不是同时满足。
- Cron 表达式本身不包含时区,实际时间由服务器或调度器配置决定。
0 0 31 2 *的字段语法正确,但二月没有 31 日,因此不会执行。- 本工具接受五段表达式或受支持的宏,不接受表达式后附带的 shell 命令。
常见问题
Cron 表达式有几段?
Linux/Unix crontab 通常使用五段表达式;Quartz 和 Spring Cron 通常使用六段或七段表达式。使用前应先确认目标调度器的语法。
*/5 * * * * 是什么意思?
它表示每 5 分钟执行一次,执行分钟为每小时的 0、5、10、15,依此类推。
为什么日期和星期同时设置后执行次数变多?
Vixie Cron 对日期和星期使用 OR 语义,任一字段匹配都会执行。例如 0 0 1 * MON 会在每月 1 日以及每个星期一执行。
Cron 表达式包含时区吗?
五段 Cron 表达式不携带时区。应根据部署服务器或调度平台使用的时区检查未来执行时间。
这个工具会上传输入的表达式吗?
不会。解析、校验和未来执行时间计算均在当前浏览器中完成。