标准 crontab 教程
一、语法概述
crontab语法格式: 分 时 日 月 周
* * * * * - - - - - | | | | | | | | | +------ 周 (0 ~ 7 , 周天 = 0 or 7,周一~周六 = 1~6 或者 SUN,MON,TUE,WED,THU,FRI,SAT) | | | +---------- 月 (1 - 12) | | +-------------- 日 (1 - 31) | +------------------ 时 (0 - 23) +---------------------- 分 (0 - 59)
在 Linux 系统中,使用
man 5 crontab 命令可以查看官方的定义。标准格式由5个时间字段和1个命令字段组成,中间用空格或制表符分隔。二、字段说明
2.1 每个域允许的值
| 字段序号 | 字段名 | 取值范围 | 标准 Linux cron 允许的特殊字符 |
|---|---|---|---|
| 1 | 分 | 0-59 | * , - / |
| 2 | 时 | 0-23 | * , - / |
| 3 | 日 | 1-31 | * , - / |
| 4 | 月 | 1-12 | * , - / |
| 5 | 周 | 0-7 或 SUN-SAT(0和7都代表周日) | * , - / |
2.2 关键点
- 1. 星期几中,0 和 7 都代表周日。
- 2. 月份和星期几也支持英文缩写(如
JAN、MON、MON-FRI),大小写通常不敏感;但可能受系统 Locale 影响,生产环境建议优先使用数字。 - 3. 标准 Linux cron 不支持
?、L、W、#等扩展符号(这些属于 Quartz/Spring)。
三、各个字符详解
1. 星号 * (通配符)
含义:代表该字段所有有效的取值。
* * * * * 每分钟执行一次
0 * * * * 每小时的0分执行一次
0 0 * * * 每天凌晨执行一次
0 * * * * 每小时的0分执行一次
0 0 * * * 每天凌晨执行一次
2. 逗号 , (指定多个值)
含义:用于列表形式,表示多个时间点。
0 2,14 * * * 每天2点和14点执行一次
0 9 * * 1,3 每周一、周三上午9点执行一次
15,30 * * * * 每小时的15、30分执行一次
0 9 * * 1,3 每周一、周三上午9点执行一次
15,30 * * * * 每小时的15、30分执行一次
3. 连字符 - (指定范围)
含义:定义连续范围。
0 9-17 * * * 每天9点到17点区间内,每小时执行一次
0 0 1-5 * * 每月1到5号区间内,每天凌晨执行一次
*/5 9-17 * * 1-5 周一到周五9-17点区间内,每5分钟执行一次
0 0 1-5 * * 每月1到5号区间内,每天凌晨执行一次
*/5 9-17 * * 1-5 周一到周五9-17点区间内,每5分钟执行一次
4. 斜杠 / (指定步长)
含义:指定间隔频率。
*/15 * * * * 每小时从0分开始,每隔15分钟执行一次
0 0 */3 * * 每月从1号开始,每隔3天的凌晨执行一次
0 0-12/2 * * * 每日0~12点区间内,每隔2小时执行一次
0 0 */3 * * 每月从1号开始,每隔3天的凌晨执行一次
0 0-12/2 * * * 每日0~12点区间内,每隔2小时执行一次
四、关于「日期」和「星期几」字段
在标准 Linux cron 中,这两个字段是独立的。
如果两个字段都设置了值,表达式含义是:
当“日期” 或 “星期几” 任一满足时,任务执行一次。
示例:
0 0 2 * 1
2(日期字段):每月2号
1(星期字段):每周一
结果:每月 2 号 和 每周一 的凌晨都会执行一次
0 0 2 * 1
2(日期字段):每月2号
1(星期字段):每周一
结果:每月 2 号 和 每周一 的凌晨都会执行一次
最佳实践:
- 1. 如果基于星期几调度 → 日期字段设为
* - 2. 如果基于几号调度 → 星期几字段设为
*
五、综合示例
| 表达式 | 含义解释 |
|---|---|
| 0 5 * * * | 每天凌晨 5 点。 |
| 30 4 1 * * | 每月 1 日凌晨 4 点 30 分。 |
| 0 22 * * 1-5 | 每周一至周五晚上 10 点。 |
| */10 * * * * | 每隔 10 分钟执行一次。 |
| 5 0 * * 0 | 每周日凌晨 0 点 5 分。 |
| 0 20 * * 6,7 | 每周六和周日晚上 8 点。 |
| 0 0 1,15 * * | 每月 1 号和 15 号凌晨。 |
| 0 9-17/2 * * * | 每天9点到17点区间内每隔2小时(9,11,13,15,17)。 |
六、总结
在标准 Linux cron 中,只需熟练掌握四个核心符号即可:
* (所有)
, (或)
- (到)
/ (每隔)
, (或)
- (到)
/ (每隔)
它们足以构建绝大多数定时任务规则。请注意:?、L、W、# 等扩展符号在
crontab -e
中无效。
在线生成与验证可使用本站 Linux Crontab生成器。
沪公网安备31010502007519号