Cron 表达式生成器与解析器

点几下即可构建 crontab 计划,也可以粘贴已有的表达式。你会得到通俗易懂的中文解释、逐字段校验,以及你所在时区接下来 10 次运行时间。

在浏览器中运行无需注册不上传任何数据

分钟小时日月星期

可视化构建器

接下来 10 次运行

    如何使用Cron 表达式生成器

    1. 输入一个 cron 表达式,例如 */15 * * * *,或点击一个预设。
    2. 阅读中文描述,确认它符合你的预期。无效的字段会被高亮并说明原因。
    3. 使用可视化构建器选项卡,通过每个、每 N 个、指定或范围来设置分钟、小时、日期、月份和星期。
    4. 查看接下来 10 次运行时间;如果服务器时区与你不同,请选择服务器的时区。
    5. 把表达式复制到你的 crontab、Kubernetes CronJob、GitHub Actions schedule 或 CI 配置中。

    一分钟看懂 Cron 语法

    标准的 cron 表达式由五个以空格分隔的字段组成:

    ┌───────────── minute (0-59)
    │ ┌─────────── hour (0-23)
    │ │ ┌───────── day of month (1-31)
    │ │ │ ┌─────── month (1-12 or JAN-DEC)
    │ │ │ │ ┌───── day of week (0-7 or SUN-SAT, 0 and 7 are Sunday)
    │ │ │ │ │
    * * * * *  command
    符号含义示例
    *任意值* * * * * 每分钟
    ,列表0 9,17 * * * 在 09:00 和 17:00
    -范围0 9 * * 1-5 工作日 09:00
    /步长*/10 * * * * 每 10 分钟
    @daily宏等同于 0 0 * * *;另有 @hourly、@weekly、@monthly、@yearly、@reboot

    “日期 / 星期”陷阱

    当两个日期字段都受限(都不以 * 开头)时,只要任意一个匹配,cron 就会运行。因此 0 0 13 * 5 会在每月 13 日以及每个星期五运行,而不只是“13 号星期五”。本生成器遵循 Vixie cron 的这一规则,并在描述中使用“或”来提醒你。

    时区与夏令时

    除非另行配置,cron 使用服务器的本地时区(某些 cron 实现使用 CRON_TZ=,Kubernetes CronJob 使用 timeZone;GitHub Actions 始终使用 UTC)。请在运行预览中选择对应的时区。落在夏令时空档内的任务(例如春季拨快时钟那晚的 02:30)会在预览中被跳过,因为该本地时间根本不存在。

    常用计划

    • */5 * * * *:每 5 分钟
    • 0 */2 * * *:每 2 小时,在整点
    • 0 9 * * 1-5:工作日 09:00
    • 0 0 1 * *:每月 1 日午夜
    • 0 3 * * 0:每周日 03:00,典型的备份时间窗口

    常见问题

    如何让 cron 任务每 5 分钟运行一次?
    使用 */5 * * * *。分钟字段上的步长 /5 表示从 0 开始每隔 5 分钟一次:00、05、10,依此类推。
    cron 支持秒吗?
    标准 crontab 不支持,最小单位是一分钟。Quartz、Spring 和一些云调度器增加了秒字段(6 或 7 个字段)。本工具校验标准的 5 字段格式,并在发现 6 个字段时提示你。
    星期日是 0 还是 7?
    两者都是。在星期字段中,0 和 7 都表示星期日,你也可以写成 SUN 或 MON-FRI 这样的名称。
    为什么我的任务运行的天数比预期多?
    如果你同时限制了日期和星期,只要任意一个匹配,cron 就会运行。把其中一个设为 *,就只按另一个来匹配。
    下次运行时间是按哪个时区显示的?
    默认使用你浏览器的时区。从列表中选择服务器的时区(通常是 UTC),即可准确看到任务在服务器上何时触发。

    相关工具