Cron表达式
Cron表达式是用于配置定时任务执行时间的强大工具,广泛应用于Unix/Linux系统(包括Rocky Linux)的计划任务中。它由5或6个字段组成,每个字段表示不同的时间单位。
1. 标准Cron表达式结构(5字段)
text
* * * * *
│ │ │ │ │
│ │ │ │ └─── 星期几 (0-6) 0=星期日
│ │ │ └───── 月份 (1-12)
│ │ └─────── 日期 (1-31)
│ └───────── 小时 (0-23)
└─────────── 分钟 (0-59)2. 特殊字符及其用法
| 字符 | 名称 | 功能描述 | 示例及说明 |
|---|---|---|---|
* | 通配符 | 匹配所有可能值 | * * * * * 每分钟执行 |
, | 列表值 | 指定多个值 | 0,15,30,45 * * * * 每刻钟执行 |
- | 范围 | 指定数值范围 | 0 9-17 * * * 9点到17点整点执行 |
/ | 步进值 | 指定间隔频率 | */15 * * * * 每15分钟执行 |
? | 无指定值 | 用于日期或星期字段的"不关心"占位符 | 0 0 ? * * 每天午夜执行 |
L | 最后 | 指定月份或星期的最后一天 | 0 0 L * * 每月最后一天执行 |
W | 工作日 | 最近的工作日(周一至周五) | 0 0 15W * * 最接近15日的工作日执行 |
# | 第N个 | 指定月份的第N个星期X | 0 0 * * 6#3 每月第3个星期六执行 |
3. 各字段详解
分钟 (0-59) 指定每小时内的分钟数
- 示例:
*/5= 每5分钟执行一次
- 示例:
小时 (0-23)
- 24小时制
- 示例:
8-17= 上午8点到下午5点
日期 (1-31)
- 月份中的具体日期
注意:某些月份少于31天
示例:
1,15= 每月1号和15号
月份 (1-12 或 JAN-DEC)
数字或英文缩写
示例:
JAN-MAR,SEP= 1-3月和9月
星期 (0-6 或 SUN-SAT)
0或7=星期日
示例:
MON-FRI= 周一至周五
4. 常用表达式示例
| 表达式 | 说明 |
|---|---|
0 * * * * | 每小时整点执行 |
0 0 * * * | 每天午夜执行 |
0 0 * * 0 | 每周日午夜执行 |
0 0 1 * * | 每月1日午夜执行 |
0 0 1 1 * | 每年1月1日午夜执行 |
*/15 * * * * | 每15分钟执行 |
0 9-17 * * 1-5 | 工作日9AM-5PM每小时执行 |
0 0 L * * | 每月最后一天午夜执行 |
0 0 ? * MON#2 | 每月第2个星期一午夜执行 |
0 8 15W * * | 每月最接近15日的工作日8AM执行 |
6. 高级用法
1. 复合表达式
# 每天9:30和14:30执行
30 9,14 * * *2. 时间范围+间隔
# 工作日每2小时执行一次(8AM-6PM)
0 8-18/2 * * 1-53. 特殊日期处理
# 每月最后一天下午4点
0 16 L * *4. 最近工作日
# 每月15日或最近的工作日
0 0 15W * *7. 注意事项
- 检查时区设置:
timedatectl