cron调度表达式
文章目录
- 一、cron表达式
- 1.1 基本介绍
- 1.2 字段取值和取值范围
- 1.3 特殊字符
- 1.4 示例
- 1.4.1 每天固定时间执行
- 1.4.2 每天多个固定时间执行
- 1.4.3 每间隔一段时间执行
一、cron表达式
1.1 基本介绍
Cron表达式是一种用于指定定时任务的时间表达式,常用来指定任务的执行时间、执行频率和执行间隔。它由6~7个字段组成,分别表示秒、分、时、日期、月份、星期、年份(可省略)。
1.2 字段取值和取值范围
下表为Cron表达式中七个字段的取值范围和支持的特殊字符:
| 字段 | 是否必须 | 取值范围 | 特殊字符 |
|---|---|---|---|
| 秒(Seconds) | 是 | [0, 59] | * , - / |
| 分 (Minutes) | 是 | [0, 59] | * , - / |
| 小时 (Hours) | 是 | [0, 23] | * , - / |
| 日期 (Day of month) | 是 | [1, 31] | * , - / ? L W |
| 月 (Month) | 是 | [1, 12] 或 [JAN, DEC] | * , - / |
| 星期 (Day of week) | 是 | [1, 7] 或 [MON, SUN] | * , - / ? L # |
| 年 | 否 | [当前年份,2099] | * , - / |
1.3 特殊字符
Cron表达式中的每个字段都支持特殊字符,每个特殊字符都有其特殊含义。
| 特殊字符 | 含义 | 示例 |
|---|---|---|
| * | 匹配任意值 | 在字段月中,*表示每个月 |
| , | 列出枚举值 | 在字段分钟中,5,20表示分别在5分钟和20分钟触发一次 |
| - | 指定范围 | 在字段分钟中,5-20表示从5分钟到20分钟之间每隔一分钟触发一次 |
| / | 指定数值的增量 | 在字段分钟中,0/15表示从第0分钟开始,每15分钟。在字段分钟中3/20表示从第3分钟开始,每20分钟。 |
| ? | 不指定值,仅用于日期和星期 | 当字段日期或星期其中之一被指定了值以后,为了避免冲突,需要将另一个字段的值设为?。 |
| L | 单词Last的首字母,表示最后一天,仅字段日期和星期支持该字符。 | 在字段日期中,L表示某个月的最后一天。在字段星期中,L表示一个星期的最后一天,也就是星期日(SUN)。 |
| W | 除周末以外的有效工作日,在离指定日期的最近的有效工作日触发事件。W字符寻找最近有效工作日时不会跨过当前月份,连用字符LW时表示为指定月份的最后一个工作日。仅字段日期支持该字符 | 在字段日期中5W,如果5日是星期六,则将在最近的工作日星期五,即4日触发。如果5日是星期天,则将在最近的工作日星期一,即6日触发;如果5日在星期一到星期五中的一天,则就在5日触发。 |
| # | 确定每个月的第几个星期几。仅字段星期支持该字符。 | 在字段星期中,4#2表示某月的第二个星期四。 |
- L,指定L字符时,避免指定列表或范围,否则会导致逻辑问题。如果在L前有具体的内容,例如,在字段星期中的
6L表示这个月的最后一个星期六。
1.4 示例
1.4.1 每天固定时间执行
- 0 15 10 ? * *,每天上午10:15执行任务
- 0 0 12 * * ?,每天中午12:00执行任务
1.4.2 每天多个固定时间执行
- 0 0 10,14,16 * * ?,每天上午10:00点、下午14:00以及下午16:00执行任务
1.4.3 每间隔一段时间执行
参考文件:
1.Cron表达式
