Cron 表达式生成器

用可视化方式建立 Unix、Quartz、AWS EventBridge 和 GitHub Actions 的 cron 表达式,并即时预览未来执行时间。

🔒 零网络请求。所有排程都在浏览器中生成。
生成的表达式 · Unix 已复制!
0 9 * * *

预览时间使用你当前浏览器的时区。

未来执行时间

未来执行时间

你刚测试了Cron 表达式生成器 — 试试 结构化数据转换器 →

什么是 Cron 调度表达式构建器?

Cron 始于 1979 年 Unix Version 7 中的后台进程。现代的 Vixie cron(用于 Linux 发行版、BSD、macOS)标准化了五字段语法:分钟、小时、月中日、月份、星期几。Quartz Scheduler(Java 生态)在前面加了秒字段(共六个),后面加了年份字段(最多七个),将星期几改为 1-7 而非 0-6,并添加了 Unix cron 没有的 L(最后)、W(工作日)、#(第 N 个工作日)修饰符。AWS EventBridge 使用六字段调度(类似 Quartz,但月中日和星期几必须互斥地为 ?),GitHub Actions 使用 POSIX 五字段。构建器让你选择目标方言并在它们之间转换。常见语法:*(任意值)、5(字面量)、1-5(范围)、1,3,5(列表)、*/15(从基数步进)、0,15,30,45(显式列表等价物)。经典坑是 0 */6 * * * ——读者以为每 6 小时开始但实际指分钟 0 的小时能被 6 整除,即 00:00、06:00、12:00、18:00。在 03:00 重启服务,下次运行是 06:00,不是 09:00。

如何使用 Cron 调度表达式构建器

选择目标方言(Unix crontab、Quartz、AWS EventBridge、GitHub Actions)。构建器显示五个(或六个/七个)字段,带有 EverySpecific 切换。切换「每分钟/小时/日」使用 * 语义或选择字面量值。使用步进输入输入 */N(例如每 15 分钟 = */15 * * * *)。月中日与星期几在某些方言中互斥——在 Unix cron 中选择两者是 OR,但在 Quartz/EventBridge 中无效(一个必须是 ?)。实时预览显示浏览器时区计算的后续 5 次计划运行。复制表达式粘贴到 crontab、.github/workflows/*.yml、EventBridge 规则或 Quartz JobDetail。表达式也可链接——URL 哈希捕获完整配置。

为什么正确的 Cron 调度很重要

0 */6 * * * 不表示每 6 小时。小时字段中的 */6 表示每小时数能被 6 整除的小时——那是 00、06、12、18,正好每个日历日 4 次运行。在 03:00 重启不会改变计划;下次运行是 06:00。要真正每 6 小时从现在开始运行,使用有状态调度器(Quartz cron 触发器、带 OnUnitActiveSec=6h 的 systemd 计时器,或你的 CI 自有间隔语法)——cron 本身纯粹基于日历且无状态。另一个经典坑是 2 月 30 日——30 14 30 * * 仅在有第 30 天的月份运行,无声地跳过 2 月(一年 11 次而非 12 次)。在发布前预计算后 5-10 次运行的工具可以捕获两个坑。AWS 建议 EventBridge 的 rate(6 hours) 等费率表达式用于有状态间隔调度,而非 cron。

常见问题

支持哪些格式?

此 builder 可输出 Unix 5-field cron,也可生成同一排程的 Quartz、AWS EventBridge 及 GitHub Actions 版本。

预览时间是本地计算的吗?

是。TeaFun 会根据你选择的设置,直接在浏览器中计算未来执行时间。

可以直接用在 GitHub Actions 吗?

可以。把格式切换为 GitHub Actions,然后复制生成的表达式到 workflow schedule 即可。