Cron 表达式生成器

0-59

0-23

1-31

1-12

0-7(0,7=周日)

下一个

Cron 语法简洁但容易出错:0 */6 * * * 表示每六小时运行一次,而 */6 0 * * * 只会在午夜后的第一个小时内触发 10 次。该生成器支持以可视化方式选择计划(如每 15 分钟、工作日上午 9 点、每月 1 日),并输出精确的表达式,以及用通俗语言解释其含义的说明。

如何构建 cron 表达式

  1. 1

    选择预设或直接输入字段

    每分钟、每小时、每天午夜、每周日以及每月 1 日都只需点击一次即可完成。其他情况,请直接在五个字段中输入数值。

  2. 2

    完善时间表

    可指定具体的分钟、小时、月份中的天数、月份以及星期中的日期。支持范围(9–17)、列表(1,15)和步长(*/6)。

  3. 3

    查看表达式

    生成器始终输出标准的 5 字段 cron 格式,并附有对计划的通俗易懂说明。

  4. 4

    核对方言

    不同方言规则不同(Quartz、AWS EventBridge、Kubernetes)。请确认表达式与你的调度器所期望的格式一致。

五个字段

*  *  *  *  *
│  │  │  │  │
│  │  │  │  └── 星期 (0-6,星期日=0,或 SUN-SAT)
│  │  │  └───── 月份 (1-12,或 JAN-DEC)
│  │  └──────── 日期 (1-31)
│  └─────────── 小时 (0-23)
└────────────── 分钟 (0-59)

每个字段均支持以下取值:

  • 具体数字:5
  • 列表:1,15,30
  • 范围:9-17
  • 步长:*/10(每 10 一次)或0-30/5(从 0 到 30 每 5 一次)
  • 通配符:*(所有取值)

常用表达式

计划 Cron 表达式
每分钟 * * * * *
每 15 分钟 */15 * * * *
每小时整点 0 * * * *
每 6 小时 0 */6 * * *
每天凌晨 2 点 30 分 30 2 * * *
每个工作日上午 9 点 0 9 * * 1-5
每周一上午 8 点 0 8 * * 1
每月 1 日凌晨 3 点 0 3 1 * *
工作日 9 点至 17 点每 15 分钟 */15 9-17 * * 1-5
每月 1 日和 15 日中午 0 12 1,15 * *
每周日午夜 0 0 * * 0

日期与星期同时指定时的陷阱

在标准 cron 中,如果同时指定了日期和星期(都不是*),则只要其中任意一个匹配,任务就会运行(是 OR,而非 AND)。0 0 1 * MON会在每月 1 日以及每周一运行,而不仅仅在 1 日恰好是周一时运行。

Vixie cron 和大多数 Linux 发行版都遵循这条 OR 规则;Quartz(Java)等少数系统则采用 AND。如有疑问,请使用调度器中的试运行(dry run)或测试任务来验证表达式。

方言差异

  • 标准Cron(Linux):包含5个字段,星期编号为0–6(周日对应0或7)。
  • Quartz(Spring、Java应用程序):需填写6–7个字段,其中第1字段为秒数,第2字段为可选年份;星期几范围为1–7(周日对应1)。
  • AWS EventBridge 定时任务:包含 6 个字段,其中需包含年份;周日期与月日期必须互斥(二者之一必须为 ?)。
  • GitHub Actions:标准5个字段,最小间隔为5分钟,仅支持UTC时间。
  • Kubernetes 定时任务:标准配置为 5 个字段,默认使用 UTC 时间格式。

务必确认您的调度程序所使用的方言。

时区

经典定时任务会在服务器的本地时区运行。这在夏令时切换期间会产生显著影响:凌晨2:30的任务在切换日可能会被执行两次或完全无法执行。现代调度工具(如systemd timers、Kubernetes、EventBridge)支持明确指定时区,除非有充分理由不使用UTC,否则应始终采用UTC时间。

常见问题

表示该字段每 5 个单位一次,从 0 开始。在“分钟”字段中,*/5会在第 0、5、10、15……55 分钟运行。它是0,5,10,15,20,25,30,35,40,45,50,55的简写形式。

Cron 无法表达不能整除 60 分钟或 24 小时的任意间隔。对于 90 分钟,请列出具体的运行时间:使用0 0,9 * * *并搭配额外的行,或改用支持任意间隔的调度工具(如 systemd 定时器、anacron)。

午夜。字段顺序是“分钟-小时”,因此0 0表示“第 0 小时的第 0 分钟”;中午则是0 12 * * *

标准 cron 会跳过该任务,错过的运行不会重试。Anacron 会在下次开机时补跑错过的每日、每周或每月任务。Kubernetes CronJob 提供startingDeadlineSecondsconcurrencyPolicy,可显式处理错过的运行窗口。

相关工具