极狐 GitLab

Cron

Cron 语法用于计划作业何时运行。

你可能需要使用 cron 语法字符串来 创建流水线计划, 或通过设置部署冻结窗口来防止意外发布。

Cron 语法#

Cron 计划使用一系列由空格分隔的五个数字:

plaintext
1# ┌───────────── 分钟 (0 - 59) 2# │ ┌───────────── 小时 (0 - 23) 3# │ │ ┌───────────── 一个月中的第几天 (1 - 31) 4# │ │ │ ┌───────────── 月份 (1 - 12) 5# │ │ │ │ ┌───────────── 一周中的第几天 (0 - 6) (周日 到 周六) 6# │ │ │ │ │ 7# │ │ │ │ │ 8# │ │ │ │ │ 9# * * * * * <要执行的命令>

(来源:Wikipedia)

在 cron 语法中,星号 (*) 意味着“每”,因此以下 cron 字符串 是有效的:

  • 每小时开始时运行一次:0 * * * *
  • 每天午夜运行一次:0 0 * * *
  • 每周日凌晨的午夜运行一次:0 0 * * 0
  • 每月第一天的午夜运行一次:0 0 1 * *
  • 每月 22 日运行一次:0 0 22 * *
  • 每年 1 月 1 日午夜运行一次:0 0 1 1 *
  • 每月运行两次,分别是 1 号和 15 号凌晨 3 点:0 3 1,15 * *

有关完整的 cron 文档,请参阅 crontab(5) Linux 手册页。 可以在 Linux 或 MacOS 终端中输入 man 5 crontab 来离线访问此文档。

此外,极狐GitLab 使用 fugit,它 接受 #% 语法。此语法可能并非在所有 cron 测试器中都有效:

  • 在每月的第二个星期一下午 3 点运行一次:0 0 * * 1#2。此语法来自 fugit 哈希扩展
  • 每隔一周的星期日上午 9 点运行:0 9 * * sun%2。此语法来自 fugit 取模扩展

Cron 示例#

plaintext
1# 每晚 7:00 运行: 20 19 * * * 3 4# 在 6 月 3 日的每一分钟运行: 5* * 3 6 * 6 7# 每周五 06:30 运行: 830 6 * * 5

更多关于如何编写 cron 计划的示例,请访问 crontab.guru

极狐GitLab 如何解析 cron 语法字符串#

极狐GitLab 在服务端使用 fugit 来解析 cron 语法 字符串,并在浏览器中使用 cron-validator 来验证 cron 语法。极狐GitLab 在浏览器中使用 cRonstrue 将 cron 转换为人类可读的字符串。