⏱️
← 返回教程列表

Cron 表达式语法:完整指南与示例

· 标签: cron-syntax, crontab-format, cron-fields, cron-expression-guide, linux-automation

Cron 表达式语法

cron 是 Unix 类系统上的标准任务调度器。每个 cron 表达式都以紧凑的字符串定义调度计划,指定命令应在何时运行。理解语法对于自动化备份、日志轮转和维护任务至关重要。

5 字段格式

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

* * * * *
| | | | |
| | | | +----- 星期几(0-7,0 和 7 都表示周日)
| | | +------- 月份(1-12)
| | +--------- 日(月中第几天,1-31)
| +----------- 小时(0-23)
+------------- 分钟(0-59)

字段详解

| 字段 | 范围 | 特殊字符 | 示例 | |-------|-------|-------------------|---------| | 分钟 | 0-59 | , - * / | 30 = 在第 30 分钟 | | 小时 | 0-23 | , - * / | 6 = 在早上 6 点 | | 日(月中第几天) | 1-31 | , - * / | 15 = 在每月 15 日 | | 月份 | 1-12 | , - * / | 6 = 在六月 | | 星期几 | 0-7 | , - * / | 0 = 在周日 |

分钟控制执行的具体分钟:30 * * * * 在每小时的第 30 分钟运行。小时定义一天中的时间:0 6 * * * 每天 6:00 运行。日字段限制为特定的日历日期:0 0 15 * * 每月 15 日午夜运行。月份将执行限制在特定月份:0 0 1 6 * 在 6 月 1 日运行。星期几控制哪些工作日:0 8 * * 1-5 在周一至周五早上 8 点运行。

重要提示: 第 29-31 天只在包含这些日期的月份中执行。在较短的月份中,这些值会被静默跳过。

特殊字符

| 字符 | 名称 | 用途 | 示例 | |------|------|---------|---------| | * | 星号 | 所有可能的值 | 分钟字段中的 * = 每分钟 | | , | 逗号 | 值列表 | 1,15,30 = 第 1、15、30 分钟 | | - | 连字符 | 范围 | 9-17 = 第 9 到第 17 小时 | | / | 斜杠 | 步进值 | */5 = 每 5 分钟 |

使用斜杠的步进值

斜杠表示"每 N 个单位":

# 每 5 分钟
*/5 * * * *

# 每 2 小时
0 */2 * * *

# 工作时间内每 15 分钟
*/15 9-17 * * *

常见 Cron 调度模式

| 调度 | 表达式 | 描述 | |----------|------------|-------------| | 每分钟 | * * * * * | 每天运行 1,440 次 | | 每 5 分钟 | */5 * * * * | 健康检查、监控 | | 每小时 | 0 * * * * | 每小时整点 | | 每天两次 | 0 6,18 * * * | 早上 6 点和下午 6 点 | | 每天午夜 | 0 0 * * * | 经典维护任务 | | 每周日 | 0 0 * * 0 | 每周维护 | | 每月 1 日 | 0 0 1 * * | 每月报告 | | 工作日早上 9 点 | 0 9 * * 1-5 | 工作时间开始 |

非标准快捷方式

某些 cron 实现支持命名快捷方式:@yearly(1 月 1 日)、@monthly(每月 1 日)、@weekly(周日)、@daily(午夜)、@hourly@reboot(系统启动时运行一次)。Vixie cron、cronie 和 systemd 定时器均支持。

常见错误

  • 同时设置日字段和星期几字段会创建 OR 条件——当任一条件匹配时任务就会运行,这通常不是本意。
  • cron 使用系统时区。靠近夏令时切换时间的任务可能会运行两次或完全不运行。
  • 始终数够五个字段。四个字段无效;六个字段需要扩展的 cron 语法。

测试你的 Cron 表达式

使用 cron 表达式验证器检查语法、预览即将到来的执行时间,并在错误影响生产环境之前发现它们。三十秒的校验就能防止静默的调度失败。

Cron 表达式语法:完整指南与示例 - CoolTool