简体中文

开发者工具 · Crontab 生成器

Cron 表达式示例:每小时、每晚、工作日、每月第一天

· 工作原理

计划任务 示例 调度

几张五场日程表卡排列在时钟和日历标记旁边
原始 ToolAcre 矢量图

十个时间表涵盖了大多数实际的 crontab。这篇文章给出了每一个的表达方式,解释了这些字段,并指出了人们几乎总是出错的一个。

您需要“06:00 的第一个月”,但搜索结果不一致 — 一组带有推理的经过验证的表达式

对于“06:00 的月初”的复制答案仅在每个位置都合理的情况下才有用。在五字段顺序中,`0 6 1 * *` 表示零分钟、六小时、第一个月的某一天、每个月和每个工作日。阅读这些字段可以防止有吸引力的示例成为无法解释的生产依赖性。

这里的示例保留在 ToolAcre 解析器和测试所使用的语法范围内。它们是时间表片段,而不是完整的作业定义。浏览器可以描述它们并显示选定区域中未来的候选挂钟,但它不知道最终可能使用它们的命令、权限或主机。

每分钟、每 5 分钟、每小时 — * * * * *、*/5 * * * * 和 0 * * * *,以及为什么领先的 0 很重要

`* * * * *` 选择每小时和日期的每分钟值。 `*/5 * * * *` 通过 55 将分钟数缩小为 0、5、10 等。 `0 * * * *` 仅选择零分钟,在每小时顶部生成一个候选者。因此,前导零是六十分钟位置与一之间的差值。

所有三种形式都以预设或经过测试的语法出现。步长从分钟字段的下限开始扩展,而通配符则扩展从 0 到 59 的每个允许值。使用预览来严格检查之后的运行情况;不要仅仅因为该工具可以枚举时间就推断该工具已开始重复过程。

每天一次,每天两次 — 30 2 * * * 和 0 6,18 * * *

每日 02:30 为 `30 2 * * *`:分钟 30 和小时 2,日历字段不受限制。每天两次,在 06:00 和 18:00 是 `0 6,18 * * *`;逗号组合了两个小时值,而分钟保持固定。当时间列表明确而不是重复为两行时,两者都更容易查看。

选定的时区会更改相同挂钟字段显示的时刻。 ToolAcre 将每个候选时间计算为该区域中的本地挂钟时间,并忽略在向前时钟更改期间不存在的本地时间。该预览行为属于该工具;本文并没有将其概括为对每个守护进程的承诺。

工作日和周末 — 0 8 * * 1-5 和 0 10 * * 0,6,周日编号说明

工作日 08:00 为 `0 8 * * 1-5`,周末早晨在 10:00 为 `0 10 * * 0,6`。此解析器接受星期日作为 0 或 7 并将两者标准化为相同的值。还支持名称,因此 `MON-FRI` 可以替换 `1-5` 而无需更改扩展的工作日。

避免同时设置月份中的某一天,除非需要 OR 并集。 `0 8 1 * 1-5` 并不意味着仅在第一个工作日。它包括每个月的第一天和每个工作日。只要两个日期字段都受到限制,生成器就会发出警告,并在结果句子中放置“或”。

每月、每季度和每年 — 0 6 1 * *、0 6 1 1,4,7,10 * 和 0 0 1 1 *

每月 06:00 第一个是 `0 6 1 * *`。每季度一月、四月、七月和十月的第一天是 `0 6 1 1,4,7,10 *`。每年 1 月 1 午夜运行的是 `0 0 1 1 *`,这也是受支持的 `@yearly` 和 `@annually` 别名使用的扩展。

这些示例使用每个选定月份中存在的一天。 ToolAcre 将不可能的组合视为语法上合法的,但会在例如 30 日仅与二月配对时发出警告。二月 29 收到闰年警告。因此,日历有效性与字段语法分开显示,而不是隐藏在一条通用的无效消息后面。

最后一天的调度无法用支持的五字段运算符表示

支持的语法没有最后一天运算符。 `L` 被拒绝而不是被翻译,并且 31 日无法涵盖有三十天的月份或二月。该工作簿提出了命令端日期测试,但此存储库不执行或验证命令,因此本文没有将该解决方法作为受支持的生成器功能提供。

将“每个月的最后一天”视为超出此表达语言的要求。选择实际目标记录的调度程序或命令策略,并在那里进行测试。 ToolAcre 对于该决策周围的普通五个字段仍然有用,但验证成功无法制造其解析器未实现的运算符。

秒字段和外部运算符被此解析器拒绝

此路线中的经典表达式没有秒或年位置。拒绝六个字段,并提供有关面向秒的调度程序样式的指导。解析器还拒绝 `?`、`#`、`L` 和 `W`,因为其值读取器仅接受数字、支持的三字母名称、范围、逗号、斜杠和通配符。

因此此处无法表示亚分钟要求。另一个调度程序的表达式也不能仅仅因为看起来相似而被声明为等效。计算位置、检查运算符支持并使用目标语法重建预期集合。省略的语义应该保持明确的差距,而不是偶然的近似。

要点:从这十个构建 - 并使用 Crontab 生成器来调整其中一个并读回结果

当每个标记都有一个原因时,常见的时间表会变得更安全:零表示边界,逗号命名替代项,范围包括两端,星号打开字段。预设提供了多个起始点,包括每分钟、一刻钟、每小时、每天、工作日办公时间、星期日、每月和每年的形式。

适应最近的预设,读取生成的句子并在机器的预期区域中扫描接下来的五次。该序列验证表达式意图,同时将部署保持在浏览器外部。一个好的例子不仅可以复制,还可以。它足够小,以至于另一个审阅者可以重建为什么每个字段都在那里。