Cron 表达式解析与生成器

输入或粘贴一个 crontab 计划,即可用通俗的中文了解它何时运行,并查看接下来的准确运行时间。也可以从常用计划开始,逐个字段进行编辑。适用于 Linux cron、Kubernetes CronJob、GitHub Actions 以及大多数调度器。

免费 · 无需注册

0–59 * , - /
0–23 * , - /
1–31 * , - / ?
1–12 或 JAN–DEC
0–7 或 SUN–SAT(0 和 7 都是周日)

接下来的运行时间

    常用计划

    输入 cron 表达式,或选择一个常用计划。

    使用方法

    1. 在输入框中输入或粘贴 cron 表达式,或点击一个常用计划。
    2. 在输入框下方查看计划的中文说明。如有错误,会立即按字段给出解释。
    3. 查看接下来 10 次运行时间。默认显示您的时区;勾选“以 UTC 显示时间”可与使用 UTC 的服务器对照。
    4. 在表达式下方的输入框中逐个调整字段,表达式会随输入同步更新。
    5. 把表达式复制到 crontab,或复制链接与团队分享这个计划。

    为什么使用这个工具

    中文说明

    每个表达式都会被翻译成清楚的中文,例如“每周一至周五,09:30”。

    接下来 10 次运行

    准确查看任务下一次在何时运行,可按本地时间或 UTC 显示,并标明距现在还有多久。

    按字段生成

    在单独的输入框中编辑分钟、小时、日、月和星期,每个字段旁都会显示允许的取值。

    清楚的错误提示

    超出范围的值、颠倒的范围、字段数量错误以及 Quartz 语法都会按字段指出。

    支持秒和简写

    支持带秒的 6 字段表达式、MON-FRI 和 JAN 等名称,以及 @daily、@reboot 等简写。

    可分享的链接

    复制一个能直接打开当前表达式的链接,方便在代码评审和工单中使用。

    Cron 语法速览

    标准的 cron 表达式由 5 个以空格分隔的字段组成。当前时间与所有字段都匹配时,任务就会运行。* 表示任意值。

    字段允许的值示例含义
    分钟0–5930第 30 分钟
    小时0–239上午 9 点
    日1–311每月 1 日
    月1–12 或 JAN–DEC*每个月
    星期0–7 或 SUN–SAT1-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 解决方案、自动化或定制系统都可以。

    告诉我们您想构建什么。我们会查看每一份咨询并通过邮件回复。

    联系

    感谢您,咨询已发送。

    我们会查看详细信息并通过邮件回复。