tigtools

Cron 表达式解释器

输入一个包含 5 个字段的 cron 计划,即可了解其含义和下次运行时间。所有计算均在浏览器中完成。

在浏览器中运行 无需注册

共 5 个字段:分钟、小时、月中的日期、月份、星期几。也支持 @daily 等宏。

常用计划

含义

每隔 15 分钟、在 09:00 至 17:59 之间、在星期一 至 星期五。

字段

分钟
*/15
小时
9-17
月中的日期
*
月份
*
星期几
1-5
时区

接下来的 10 次运行

    使用方法

    1. 输入或粘贴 cron 表达式,也可以选择常用的计划。
    2. 查看通俗易懂的说明。若字段无效,会指出字段名称和原因。
    3. 查看接下来的 10 次运行时间,默认使用本地时区。如果服务器使用 UTC,请切换到 UTC。
    4. 复制运行时间以便分享,或调整表达式,直到计划符合需求。

    工作原理

    标准 cron 表达式与 Linux 上 crontab 使用的格式(Vixie cron 和 cronie)相同,也广泛用于 CI 和托管服务的调度器。它由五个以空格分隔的字段组成:分钟(0–59)、小时(0–23)、月中的日期(1–31)、月份(1–12 或 JAN–DEC)和星期几(0–7 或 SUN–SAT,其中 0 和 7 都表示星期日)。每个字段都支持 *(表示所有值)、单个值、范围(如 1-5)、列表(如 1,15,30)和步长(如 */15,表示每隔 15 个值;或 9-17/2,表示从 9 到 17 每隔两小时)。名称不区分大小写。快捷写法 @yearly(或 @annually)、@monthly、@weekly、@daily(或 @midnight)和 @hourly 分别表示 0 0 1 1 *、0 0 1 * *、0 0 * * 0、0 0 * * * 和 0 * * * *。

    月中的日期和星期几这两个字段有一条常让人意外的规则。如果其中任一字段以 * 开头,日期就必须同时符合两个字段。如果两个字段都有限制,则日期符合其中任一字段即可:0 0 13 * 5 会在每月 13 日以及每个星期五运行,而不只是 13 日恰逢星期五时运行。判断依据是字段是否以 * 开头,因此 */2 这样的步长也算作不受限。这符合 Vixie cron 和 cronie 的行为,但少数其他调度器的规则不同。

    下次运行时间按浏览器的时区计算,也可以切换到 UTC;大多数服务器和云调度器使用 UTC。cron 本身使用运行它的机器的时区。夏令时切换期间,不同的 cron 守护进程行为可能不同;此工具会略过时钟拨快时不存在的本地时间,并将重复出现的小时列出一次。本工具不支持扩展语法:包含秒或年份的六字段或七字段 Quartz 表达式,以及特殊字符 ?、L、W 和 #。

    示例

    工作时间健康检查

    */15 9-17 * * 1-5 表示星期一至星期五的 09:00 到 17:59 之间,每隔 15 分钟运行一次。每天最后一次运行时间是 17:45。

    每晚备份

    30 2 * * * 表示每天 02:30 运行。如果服务器使用 UTC,而你位于纽约,UTC 模式下的下次运行列表会显示服务器实际采用的时间。

    日期字段陷阱

    0 9 1 * 1 看起来像是“每月 1 日恰逢星期一时的 9:00”,但实际上它会在每月 1 日 09:00 运行,也会在每个星期一运行。若要只在每月第一个星期一运行,请设置为 0 9 1-7 * *,并在脚本中检查星期几。

    常见问题

    cron 中的 */5 表示什么?

    表示从该字段的最小值开始,每隔五个值运行一次。在分钟字段中,*/5 会在第 0、5、10……55 分钟运行。在小时字段中,*/5 会在 0、5、10、15 和 20 点运行,因此从 20:00 到午夜间隔的是四小时,而不是五小时。

    为什么我的任务运行的日期比预期多?

    当月中的日期和星期几这两个字段都有限制时,cron 会在符合其中任一字段的日期运行。例如,0 0 15 * 1 会在每月 15 日以及每个星期一运行。将其中一个字段设为 *,即可只按另一个字段匹配。

    cron 使用哪个时区?

    cron 守护进程所在服务器的系统时区,除非 crontab 设置了 CRON_TZ 或 TZ(cronie 支持)。云调度器通常默认使用 UTC。启用 UTC 切换开关,即可查看 UTC 服务器采用的时间。

    可以使用秒字段或年份字段吗?

    标准 cron 不支持。它的精度为一分钟,且使用五个字段。包含秒和年份的六字段或七字段格式属于 Quartz、Spring 等库,本工具不支持。

    星期日用 0 还是 7 表示?

    两者都可以。在星期几字段中,0 和 7 都表示星期日,1 表示星期一,6 表示星期六。也可以使用三字母名称 SUN 到 SAT。

    隐私

    表达式解析和运行时间计算均在浏览器中完成。你输入的内容不会上传、存储或纳入分析统计。