时间字段怎么读
计划任务的时间用五个字段描述,依次是分钟、小时、日、月、星期。每个字段可以写具体数值、用逗号列举多个值、用短横线表示区间、用斜杠表示步进,星号表示该字段不限制。最容易出错的地方有两个:一是日与星期同时写了具体值时的组合语义不是「同时满足」而是「任一满足」,二是步进从零开始计算,导致「每七分钟」这类需求无法直接表达。写法确认后,最好在本机实测一次再交付。
基本信息
| 字段顺序 | 分钟、小时、日、月、星期 |
|---|---|
| 取值范围 | 分钟与小时按常规范围,日与月按日历范围,星期从周日算起 |
| 通配符 | 星号表示该字段不做限制 |
| 列举与区间 | 逗号分隔多个值,短横线表示连续区间 |
| 步进 | 斜杠表示每隔多少单位执行一次 |
| 精度限制 | 最小粒度为分钟,无法表达秒级与年级调度 |
典型使用场景
- 每日凌晨执行备份:固定小时与分钟,其余字段不限
- 工作日周期巡检:在星期字段限定工作日,配合分钟步进
- 每月固定日期出报表:在日字段列举多个日期
- 错峰执行:把同批任务分散到不同分钟,避免整点拥塞
- 高频采集:按分钟步进采集指标,注意任务执行时间不能超过间隔
- 一次性提醒:用宏写法在开机时执行特定检查
写法示例
写法示例
# 每天 02:30 执行备份
30 2 * * * /opt/scripts/backup.sh
# 工作日每 15 分钟巡检
*/15 * * * 1-5 /opt/scripts/check.sh
# 每月 1 日与 15 日 04:00 出报表
0 4 1,15 * * /opt/scripts/report.sh
# 每周一 03:00(星期字段用 1)
0 3 * * 1 /opt/scripts/weekly.sh字段与符号读法
| 字段 | 取值范围 | 写法示例 |
|---|---|---|
| 分钟 | 0 到 59 | 步进写法表示每隔若干分钟 |
| 小时 | 0 到 23 | 写具体数值表示某个整点 |
| 日 | 1 到 31 | 逗号列举多个日期 |
| 月 | 1 到 12 | 短横线表示区间 |
| 星期 | 0 到 7,0 与 7 都表示周日 | 短横线表示工作日区间 |
| 斜杠 | 步进单位 | 从零开始计算,注意与预期差异 |
| 星号 | 不限制该字段 | 配合其它字段共同限定时间 |
日与星期两个字段都写具体值时的语义是「任一满足」:比如「1 日」或「星期一」任意一个条件成立都会触发。需要同时满足的场景必须拆成两条任务,或在脚本内部自行判断日期,否则执行次数会远超预期。
不少实现支持以特殊前缀开头的宏写法,用来表达每天、每周、开机时等常见周期,写起来更直观。但不同实现的支持范围不完全一致,跨平台脚本仍建议使用标准五段式写法,保证在任何环境下行为一致。