首页/系统/信创系统运维速查/cron 时间字段格式详解
服务与运维65 条

cron 时间字段格式详解

五个字段依次为分、时、日、月、周:支持 * 任意、a-b 区间、a,b 列举与 /n 步进;日与周同时写具体值时为'或'语义,容易写错。

信创系统运维速查系统更新于 2026-10-13

时间字段怎么读

计划任务的时间用五个字段描述,依次是分钟、小时、日、月、星期。每个字段可以写具体数值、用逗号列举多个值、用短横线表示区间、用斜杠表示步进,星号表示该字段不限制。最容易出错的地方有两个:一是日与星期同时写了具体值时的组合语义不是「同时满足」而是「任一满足」,二是步进从零开始计算,导致「每七分钟」这类需求无法直接表达。写法确认后,最好在本机实测一次再交付。

基本信息

字段顺序分钟、小时、日、月、星期
取值范围分钟与小时按常规范围,日与月按日历范围,星期从周日算起
通配符星号表示该字段不做限制
列举与区间逗号分隔多个值,短横线表示连续区间
步进斜杠表示每隔多少单位执行一次
精度限制最小粒度为分钟,无法表达秒级与年级调度

典型使用场景

  • 每日凌晨执行备份:固定小时与分钟,其余字段不限
  • 工作日周期巡检:在星期字段限定工作日,配合分钟步进
  • 每月固定日期出报表:在日字段列举多个日期
  • 错峰执行:把同批任务分散到不同分钟,避免整点拥塞
  • 高频采集:按分钟步进采集指标,注意任务执行时间不能超过间隔
  • 一次性提醒:用宏写法在开机时执行特定检查

写法示例

写法示例
# 每天 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 日」或「星期一」任意一个条件成立都会触发。需要同时满足的场景必须拆成两条任务,或在脚本内部自行判断日期,否则执行次数会远超预期。
不少实现支持以特殊前缀开头的宏写法,用来表达每天、每周、开机时等常见周期,写起来更直观。但不同实现的支持范围不完全一致,跨平台脚本仍建议使用标准五段式写法,保证在任何环境下行为一致。

易错点

  • 日与星期同时写具体值,实际是任一满足而非同时满足,任务执行频率远超预期
  • 步进写法从零开始计算,按「每 N 分钟」的直觉理解会导致执行时刻与预期不符
  • 把任务间隔设置得比执行时间还短,前一轮未结束下一轮又开始,出现并发冲突
  • 写完不做实测直接上生产,语法或语义理解偏差要到出问题时才暴露

数据来源与参考

  • man 5 crontab(时间字段)
  • 红帽系统管理指南(cron 时间格式)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌