Cron 表达式解析与生成器
输入或粘贴一个 crontab 计划,即可用通俗的中文了解它何时运行,并查看接下来的准确运行时间。也可以从常用计划开始,逐个字段进行编辑。适用于 Linux cron、Kubernetes CronJob、GitHub Actions 以及大多数调度器。
免费 · 无需注册
使用方法
- 在输入框中输入或粘贴 cron 表达式,或点击一个常用计划。
- 在输入框下方查看计划的中文说明。如有错误,会立即按字段给出解释。
- 查看接下来 10 次运行时间。默认显示您的时区;勾选“以 UTC 显示时间”可与使用 UTC 的服务器对照。
- 在表达式下方的输入框中逐个调整字段,表达式会随输入同步更新。
- 把表达式复制到 crontab,或复制链接与团队分享这个计划。
为什么使用这个工具
中文说明
每个表达式都会被翻译成清楚的中文,例如“每周一至周五,09:30”。
接下来 10 次运行
准确查看任务下一次在何时运行,可按本地时间或 UTC 显示,并标明距现在还有多久。
按字段生成
在单独的输入框中编辑分钟、小时、日、月和星期,每个字段旁都会显示允许的取值。
清楚的错误提示
超出范围的值、颠倒的范围、字段数量错误以及 Quartz 语法都会按字段指出。
支持秒和简写
支持带秒的 6 字段表达式、MON-FRI 和 JAN 等名称,以及 @daily、@reboot 等简写。
可分享的链接
复制一个能直接打开当前表达式的链接,方便在代码评审和工单中使用。
Cron 语法速览
标准的 cron 表达式由 5 个以空格分隔的字段组成。当前时间与所有字段都匹配时,任务就会运行。* 表示任意值。
| 字段 | 允许的值 | 示例 | 含义 |
|---|---|---|---|
| 分钟 | 0–59 | 30 | 第 30 分钟 |
| 小时 | 0–23 | 9 | 上午 9 点 |
| 日 | 1–31 | 1 | 每月 1 日 |
| 月 | 1–12 或 JAN–DEC | * | 每个月 |
| 星期 | 0–7 或 SUN–SAT | 1-5 | 周一至周五 |
特殊字符
| 字符 | 含义 | 示例 |
|---|---|---|
| * | 任意值 | 小时字段为 *:每小时 |
| , | 列出多个值 | 0,30:第 0 和第 30 分钟 |
| - | 取值范围 | 1-5:周一至周五 |
| / | 间隔 | */15:每 15 分钟 |
| @daily | 简写 | 等同于 0 0 * * * |
常用 cron 示例
| 表达式 | 运行时间 |
|---|---|
| */5 * * * * | 每 5 分钟 |
| 0 * * * * | 每小时整点 |
| 0 0 * * * | 每天午夜 |
| 30 2 * * 0 | 每周日 02:30 |
| 0 9 * * 1-5 | 工作日 09:00 |
| 0 0 1 * * | 每月 1 日午夜 |
| 0 */6 * * * | 每 6 小时,即 00:00、06:00、12:00 和 18:00 |
| 15 3 * * 1 | 每周一 03:15 |
常见陷阱
- 时区:cron 使用服务器的时区,通常是 UTC。北京时间比 UTC 早 8 小时,如果按北京时间写计划但服务器用 UTC,就会相差 8 小时。Kubernetes CronJob 和 GitHub Actions 未设置时区时也使用 UTC。
- 同时设置日和星期:0 0 1 * 1 会在每月 1 日和每个周一都运行,而不只是在恰好是周一的 1 日运行。
- 分钟字段中的 */7 每小时都会重新开始:在第 0、7……56 分钟运行,然后又在第 0 分钟运行,间隔只有 4 分钟。
- 夏令时:在实行夏令时的地区,调整时钟的那天夜里,02:00 到 03:00 之间的任务可能被跳过或运行两次。
- % 在 crontab 行中有特殊含义,在命令中必须写成 \%。
常见问题
什么是 cron 表达式?
它是由分钟、小时、日、月和星期 5 个字段组成的简短计划。Linux 和 macOS 上的 cron,以及 Kubernetes CronJob、GitHub Actions 等许多调度器,都用它来决定任务何时运行。
这和 crontab.guru 是一样的吗?
不是。这是一个目标相似的独立免费工具。它还能按本地时区或 UTC 列出接下来的运行时间,支持秒,并提供按字段生成的功能,支持 6 种语言。
如何让 cron 任务每 5 分钟运行一次?
使用 */5 * * * *。分钟字段中的 */5 表示从第 0 分钟开始每 5 分钟一次。
如何只在工作日运行任务?
在星期字段中填写 1-5,例如 0 9 * * 1-5 表示周一至周五 09:00。也可以写成 MON-FRI。
周日是 0 还是 7?
两者都是。在标准 cron 中,0 和 7 都表示周日,1 表示周一。Quartz 等其他系统的计数方式不同,其中 1 表示周日。
如何在每月最后一天运行任务?
标准 cron 没有表示月末的符号。某些工具中的 L 是 Quartz 扩展。常见做法是使用 0 0 28-31 * *,并在命令中检查明天是否为 1 日,例如 [ "$(date -d tomorrow +\%d)" = "01" ] && 你的命令。
运行时间使用哪个时区?
默认使用您设备的时区。勾选“以 UTC 显示时间”即可按 UTC 显示,大多数服务器、容器和云调度器使用的都是 UTC。
支持秒吗?
支持。开启秒字段或输入 6 个字段时,第一个字段会按秒处理,与 Quartz 和 Spring 相同。标准 Linux cron 不支持秒。
相关工具
想开发什么吗?
告诉我们你想构建什么。
告诉我们您需要构建什么:从简单的网站到完整应用、AI 解决方案、自动化或定制系统都可以。