在计划运行前了解 cron 调度
Cron 表达式是服务器、CI 作业、自动化平台和维护脚本使用的紧凑调度字符串。它们功能强大,但一个小错误可能会将任务从每天变成每分钟,或从工作日变为周末。
此解析器以简明语言解释 Unix 五字段 cron 表达式,分解每个字段,并使用工具中选择的时区显示即将运行的时间。
支持的 cron 方言
v1 解析器支持具有五个字段的标准 Unix cron:
minute hour day-of-month month day-of-week - 分钟取值从
0to59. - 小时取值从
0to23. - 日(一个月中的日期)取值从
1to31. - 月份取值从
1to12,以及类似于JANandDEC. - 星期几取值从
0to7,以及类似于MONandFRI。其中 0 和 70and7表示星期日。
它支持通配符、逗号列表、范围和步进值,例如 */15 or 9-17/2.
有意不支持的内容
Cron 方言并非通用。Quartz、systemd 定时器、云调度器、Kubernetes、GitHub Actions 和托管平台可能会添加它们自己的字段或特殊运算符。
- 秒字段和年份字段不作为 Unix cron 解析。
- Quartz 运算符,例如
?,L,W,和#,会被报告为不受支持。 - 宏,例如
@dailyand@reboot不会扩展。 - 调度后的命令文本不被视为表达式的一部分。
将此页面用作 Unix 风格调度的检查工具。在更改生产自动化之前,请核实将运行作业的确切调度器。
时区与夏令时行为
Cron 表达式本身不包含时区信息。相同的表达式可能会在不同时间点运行,具体取决于服务器使用的是 UTC、本地系统时区,还是调度器特定的时区设置。
- 预览以所选的 IANA 时区和 UTC 显示运行时间。
- 春季向前切换可能会跳过不存在的本地时钟时间。
- 回退(秋季)时钟转换可能会重复本地时钟时间;调度器的行为可能不同。
- 如果日(一个月中的日期)和星期几都被限制,Unix cron 常使用 OR 语义。
对于关键任务,请将预览视为规划辅助,并在调度器本身中确认行为。
常见问题解答
这支持 Quartz cron 吗?
不。解析器仅支持 Unix 五字段 cron。Quartz 风格的秒字段、年份字段和像 ?, L, W,和 # 这样的运算符被标记为不受支持。
cron 表达式使用哪个时区?
Cron 表达式不携带时区信息。预览使用工具中选择的时区,但您的服务器或调度器可能使用不同的时区。
为什么日(一个月中的日期)和星期几都可以匹配?
在常见的 Unix cron 行为中,当两个字段都被限制时,如果任一字段匹配,则该日期可以匹配。例如, 0 0 1 * MON 可以在每月的第一天和星期一运行。
我可以粘贴 crontab 的命令部分吗?
仅粘贴五个调度字段。该工具是一个调度解析器,而不是完整的 crontab 解析器,因此调度之后的命令文本不会被解释。