Cron 解析

用人话解释 cron 表达式,并算出接下来 5 次执行时间

关于Cron 解析

Cron 表达式用五个字段描述定时规则:分钟、小时、日、月、星期。它的坑集中在两个地方——第一,日和星期是“或”的关系(某些实现里同时指定会取并集),第二,服务器时区未必是你以为的那个。把表达式翻译成人话并列出未来执行时间,是避免“任务没跑”这类事故最有效的方式。

使用步骤

  1. 粘贴 cron 表达式,工具自动按五段式解析
  2. 阅读人话解释,确认每个字段的取值是否符合预期
  3. 查看列出的接下来 5 次执行时间,对照日历核对
  4. 上线前确认服务器时区,必要时换算后再写入 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 · 分类:开发

相关阅读

← 返回 ToolHub 全部工具

✦ OPEN SOURCE TOOLS ✦

安全、快捷、开源工具及资源

无需安装、无需注册、无需命令行 —— 挑一个工具,填参数,出结果。

99 个工具 · 50 条资源 · 文件拖进来、内容粘进来都能用 · 无需注册
运行方式排序共 99 个
🔒 为什么本地执行更放心这一条是我们和多数工具站的根本区别
数据不出设备图片、Token、表格都在你的浏览器内处理,服务端不接触你的输入
没有账号体系不注册、不收邮箱、不做用户画像,收藏与记录只存在本机
可离线使用安装为桌面/手机应用后,断网也能运行全部本地工具