理解 cron 表达式实际运行什么
粘贴 cron 表达式,查看确切的调度字段与下次触发时间,并了解最常让人意外的记法。
- 1 Cron 表达式解析器 →
粘贴形如 */15 * * * * 或 0 9 * * 1-5 的表达式。工具会将表达式拆分为分钟 / 小时 / 日 / 月 / 星期字段,并用自然语言逐一解释。
- 2
记法提示:* 表示该字段取每一个值;*/5 表示从字段最小值起每第 5 个值;范围 (1-5) 与列表 (1,15) 可自由组合。经典意外:在标准 cron 中,若日和星期都被限定(非 *),则任一匹配即触发——而非两者同时匹配。
- 3 Cron 表达式生成器 →
反向操作:描述一个调度得到表达式,对增加秒字段的 6 字段系统很有用。
- 4
两个可移植性警告:某些系统要求 6 或 7 个字段(秒、年)——请确认你的调度器方言;cron 按服务器本地时区触发,因此 9:00 的表达式在不同主机上对应不同的 UTC 时间,且夏令时切换可能导致跳过或重复运行。
常见问题
- cron 能处理夏令时吗?
- cron 按墙上时钟求值,因此在夏令时切换前后可能跳过或重复运行。对间隔敏感的任务,考虑用 UTC 调度或使用单调计时器。
- 分钟字段中 * 和 */5 有什么区别?
- * 匹配每一分钟。*/5 匹配第 0、5、10……55 分钟——从字段最小值起每第 5 分钟。
- 为什么我的表达式没在预期日期运行?
- 若日和星期都被限定,标准 cron 对二者取或(OR)。若需要 AND 语义,在其中一字段用 *,再通过包装检查实现。