Cron
Cron 语法用于计划作业何时运行。
你可能需要使用 cron 语法字符串来 创建流水线计划, 或通过设置部署冻结窗口来防止意外发布。
Cron 语法
Cron 计划使用一系列由空格分隔的五个数字:
plaintext1# ┌───────────── 分钟 (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 示例
plaintext1# 每晚 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 转换为人类可读的字符串。