tomai
登录

Cron 速查:五个字段、特殊字符与常见坑

cron 用五个字段描述定时计划——分钟、小时、月中日、月份、星期——后面跟要执行的命令。一行 30 9 * * 1 表示每周一上午九点半,几乎所有 Unix 系统和无数调度器都讲这种方言。

1. 字段与取值范围

分钟 0 到 59,小时 0 到 23,月中日 1 到 31,月份 1 到 12,星期 0 到 7,其中 0 和 7 都表示周日。星号表示该位置取所有值,所以 0 * * * * 表示每小时整点触发。

2. 步长、范围与列表

斜杠定步长——分钟字段的 */15 表示每十五分钟——连字符定范围,如星期 1-5 表示周一到周五,逗号连接列表如 0,30。三者自由组合,所以 0 9-17 * * 1-5 读作工作日工作时间每小时一次。

3. 日期字段的 OR 特性

月中日和星期两个字段同时受限时,cron 在任一匹配时触发——不是同时匹配。想写每月第一个周一要格外小心,因为同时限制两个字段是放宽而不是收窄计划。把其中一个留成星号,另一个才能说了算。

4. 预设与环境陷阱

daily、weekly 这类简写会展开成字段模式,但经典五字段形式在系统之间移植性最好。记住 cron 运行在极简环境里:终端里的路径、locale 和 shell 习惯都带不过去,所以一律用绝对路径,先手工跑通命令再写进计划。用 our cron generator 可视化拼表达式并预览下次运行时间,结果直接在浏览器里算出。