Crontab 是 Linux / Unix 下配置定时任务的表达式,用 5 个字段定义"什么时候执行",从左到右依次是分、时、日、月、周。例如 0 2 * * * 表示"每天凌晨 2:00"。U2工具箱 Crontab 解析工具能在线解释每个字段含义,并预测未来若干次执行时间,还内置常用模板。
一、五个字段分别是什么
| 字段 | 取值范围 | 含义 |
|---|---|---|
| 分钟 | 0-59 | 第几分钟 |
| 小时 | 0-23 | 第几小时(0=午夜) |
| 日 | 1-31 | 每月几号 |
| 月 | 1-12 | 几月 |
| 周 | 0-7 | 星期几(0 和 7 都是周日) |
特殊符号:* 任意值、, 列举(如 1,15)、- 范围(如 9-17)、/n 步长(如 */5 每 5 个单位)。
二、常见表达式速查
| 表达式 | 含义 |
|---|---|
* * * * * | 每分钟 |
*/5 * * * * | 每 5 分钟 |
0 2 * * * | 每天 02:00 |
0 0 * * 1 | 每周一 00:00 |
0 0 1 * * | 每月 1 号 00:00 |
三、三个容易踩的坑
- "日"和"周"同时限定时是 OR 关系:
0 0 1 * 1表示"每月 1 号或每周一",而非"1 号且是周一"。 - 时区:cron 按服务器时区执行,跨时区部署要确认,否则时间对不上。可用时间戳转换工具核对时间。
- 命令里的 %:在 crontab 中
%有特殊含义,需转义为\%。
四、如何在线解析
- 打开 https://www.uutools.com/crontab-parse。
- 输入表达式,查看每个字段的中文解释。
- 查看预测的未来若干次执行时间,确认与预期一致。
- 不确定写法时,直接套用内置常用模板。
五、常见问题(FAQ)
Q1:Crontab 支持秒级吗?
标准 5 位 cron 不支持秒。部分环境(如 Quartz、某些框架)用 6/7 位含秒字段,需按其规范书写。
Q2:星期用 0 还是 7 表示周日?
两者都可以,0 和 7 都代表周日。
Q3:怎么确认表达式写对了?
用解析工具看它预测的下次执行时间,最直观。
小结:记住"分时日月周"的顺序,理解 * , - / 四个符号,再留意日周 OR、时区两个坑即可。写不确定时用Crontab 解析工具验证执行时间,避免定时任务"跑错点"。