Cron 解析
用人话解释 cron 表达式,并算出接下来 5 次执行时间
关于Cron 解析
Cron 表达式用五个字段描述定时规则:分钟、小时、日、月、星期。它的坑集中在两个地方——第一,日和星期是“或”的关系(某些实现里同时指定会取并集),第二,服务器时区未必是你以为的那个。把表达式翻译成人话并列出未来执行时间,是避免“任务没跑”这类事故最有效的方式。
使用步骤
- 粘贴 cron 表达式,工具自动按五段式解析
- 阅读人话解释,确认每个字段的取值是否符合预期
- 查看列出的接下来 5 次执行时间,对照日历核对
- 上线前确认服务器时区,必要时换算后再写入 crontab
常见错误
日与星期同时指定
两个字段都写具体值时标准 cron 取“或”的关系,执行频率比预期高。只用一个字段表达规则最清晰。
时区想当然
crontab 默认用系统时区,云服务器多是 UTC。写“每天 9 点”前先确认系统时区,否则差一整班。
步长语法用错场景
*/15 表示从 0 开始每 15 分钟一次,不是“每刻钟对齐”。需要整点、半点、45 分这种组合时用逗号列出具体值。
常见问题
为什么我写的 * 在分钟位不生效?
* 表示该字段的每一个值。分钟位写 * 就是每分钟执行一次,如果配合其他字段为 *,就是每分钟都在跑,容易被误认为没生效。
0 和 7 都表示周日吗?
在标准 cron 中是的,两者都指向周日;1 表示周一,依次类推到 6 表示周六。
能算出下次执行时间吗?
能,解析结果里会给出接下来几次触发时刻。这是排查 cron 最有效的一步——表达式「看着对」和「真的会在明天凌晨 3 点跑」是两件事,有具体时间点才不会上线后才发现写错。
L、W、# 这些特殊字符支持吗?
不支持。那是 Quartz 的扩展语法(Linux crontab 没有),混用会在两边都出错。本站按标准 5 段 crontab 解析,遇到这些字符会直接报错而不是猜你的意思。
为什么和 Kubernetes 的 cron 对不上?
K8s 的 CronJob 遵循标准 5 段,但时区默认取控制面容器的时区(通常是 UTC),不是你的本地时间。同一个表达式在本地看着 3 点跑,在集群里可能是 11 点。要在 spec 里显式写 timeZone 字段。
来源:内置实现 · License: MIT · 分类:开发
相关阅读
- 二维码生成 —— 把文本/网址变成二维码,可下载 PNG
- 哈希计算 —— SHA-256/384/512 哈希,基于 WebCrypto 安全实现
- UUID / ULID 生成 —— UUID v4、ULID、Nano ID 批量生成,可作数据库主键
- DevDocs —— 同类第三方工具(官方在线版)
- Prettier Playground —— 同类第三方工具(官方在线版)
- 前端调试工具包 —— 专题工具包
- 接口联调试探 —— 专题工具包
- 开发者速查手册 —— 专题工具包
- 全部开发类工具 —— 按分类浏览
安全、快捷、开源工具及资源
无需安装、无需注册、无需命令行 —— 挑一个工具,填参数,出结果。