第 2 课
字段与语法
五字段 cron 中的通配符、列表、范围与步长。
读懂 cron 就是从左到右读 五个受约束的整数(或通配符)。
字段顺序与范围
| 字段 | 允许值(典型 Unix) |
|---|---|
| 分 | 0–59 |
| 时 | 0–23 |
| 日 | 1–31 |
| 月 | 1–12(部分解析器支持英文名) |
| 周 | 0–7(0 与 7 常均表示周日) |
记忆:分在时前,日在月前,最后是 周。
部分系统有 秒 或 年 字段——本课程默认讲常见的五字段行。
通配符 *
字段中的 * 表示「该字段每个允许值」。
* * * * *— 每分钟(生产环境极少需要)0 * * * *— 每小时的第 0 分(整点)
列表与范围
- 列表:分钟字段
0,15,30,45— 每小时四次 - 范围:周字段
1-5— 周一至周五(注意平台对 0/1 起始的差异) - 组合:时字段
9-17— 在匹配的分钟上覆盖 9–17 点
步长 /
分钟字段 */5 表示「从 0 起每 5 分钟」:0、5、10、…
30-59/10 表示分钟 30、40、50。
步长作用于 / 前的原子。步长位置放错是常见解析错误。
日 vs 周
当 日 与 周 同时被限制(非 *)时,Unix cron 通常按 或(OR) 而非 且(AND):
0 0 1 * 1— 每月 1 日 0 点 或 每周一 0 点(满足其一即触发)
若需要「每月第一个周一」,单靠 cron 很别扭——可用包装脚本或更强调度器。
非法组合
2 月 31 日、分钟 60 等均非法。良好解析器会 early reject;静默工具可能给出空的下次执行列表。
要点
逐字段 构建表达式:先定分、时,再决定日期过滤放在日、周或两者——并牢记 OR 语义。写入生产 crontab 前用解析器验证。