详解
Cron在线表达式生成器:http://cron.ciding.cc/
秒
允许值范围: 0~59,不允许为空值
*:每隔1秒钟触发。例子:* * * * * *代表每秒钟执行1次
,:指定的秒数触发。例子:0,30,45 * * * * * 代表每分钟的第0,30,45秒执行
-:指定的范围内触发。例子:10-30 * * * * *代表每分钟从第10秒开始到第30秒结束,每隔1秒执行1次
/:触发步进,/前面的值代表初始值(没有则为0),后面的值代表偏移量。例子:
- 5/10 * * * * ?代表从第5秒开始,每隔10秒执行1次
- /20 * * * * ?代表从第0秒开始,每隔20秒执行1次
- 10-40/10 * * * * *代表从第10秒开始,第40秒结束,每隔10秒执行1次
分
允许值范围: 0~59,不允许为空值
*:每隔1分钟触发。例子:0 * * * * *代表每分钟执行1次
,:指定的分钟触发。例子:0 0,30,45 * * * * 代表第0,30,45分钟执行
-:指定的范围内触发。例子:0 10-30 * * * *代表从第10分钟开始到第30分钟结束,每隔1分钟执行1次
/:触发步进,/前面的值代表初始值(没有则为0),后面的值代表偏移量。例子:
- 0 5/10 * * * *代表从第5分钟开始,每隔10分钟执行1次
- 0 /20 * * * ?代表从第0分钟开始,每隔20分钟执行1次
- 0 10-40/10 * * * *代表从第10分钟开始,第40分钟结束,每隔10分钟执行1次
时
允许值范围: 0~23,不允许为空值
*:每隔1小时触发。例子:0 0 * * * *代表每小时执行1次
,:指定的时间点触发。例子:0 0 0,2,9 * * * 代表第0,2,9小时执行
-:指定的范围内触发。例子:0 0 10-20 * * *代表从第10点开始到第20点结束,每隔1小时执行1次
/:触发步进,/前面的值代表初始值(没有则为0),后面的值代表偏移量。例子:
- 0 0 5/10 * * *代表从第5点开始,每隔10小时执行1次
- 0 0 /20 * * ?代表从第0点开始,每隔20小时执行1次
- 0 0 10-20/10 * * *代表从第10点开始,第20点结束,每隔10小时执行1次
日
允许值范围: 1-31 ,不允许为空值
W字符代表着平日(Mon-Fri),并且仅能用于日域中。它用来指定离指定日的最近的一个平日。大部分的商业处理都是基于工作周的,所以 W 字符可能是非常重要的。例子:
- 15W:离该月15号的最近一个平日。假如15号是星期六,那么15W会在14号(星期五)触发,因为星期四比星期一离15号更近。
C:计划所关联的日期,如果日期没有被关联,则相当于日历中所有日期。例子:
- 5C在日期字段中就相当于日历5日以后的第一天。1C在星期字段中相当于星期日后的第一天。
月
允许值范围: 1~12 (JAN-DEC),不允许为空值
*:每月触发。例子:0 0 0 1 * ? *代表每月1日执行1次
,:指定的时间点触发。例子:0 0 0 1 2,5 ? * 代表2月1日、5月1日执行
-:指定的范围内触发。例子:0 0 0 1 8-12 ? *代表从8月1日开始,12月1日结束,每隔1月执行1次
/:触发步进,/前面的值代表初始值(没有则为0),后面的值代表偏移量。例子:
- 0 0 0 1 1/2 ? *代表从1月1日开始,每隔2月执行1次
- 0 0 0 1 /2 ? *代表从1月1日开始,每隔2年执行1次
- 0 0 0 1 2-10/2 ? *代表从2月1日开始,10月1日结束,每隔2月执行1次
周
允许值范围: 1~7 (SUN-SAT),1代表星期天(一星期的第一天),以此类推,7代表星期六(一星期的最后一天),不允许为空值
* :每星期都触发;
?:与{日期}互斥,即意味着若明确指定{日期}触发,则表示{星期}无意义,以免引起冲突和混乱
, :在指定的星期约定触发。例子:
- 0 0 0 * * 1,3,5代表星期天、星期二和星期四触发
-:在指定的星期范围内触发,比如2-4代表从星期一开始触发到星期三结束触发,每隔1天触发
/ :触发步进(step),/前面的值代表初始值(等同1),后面的值代表偏移量,例子:
- 1/3或者/3:从星期天开始触发,每隔3天触发1次
- 1-5/2:在[1,5]范围内,每隔2天触发,即星期天、星期二、星期四触发
L 如果{星期}占位符如果是L,即意味着星期的的最后一天触发,即星期六触发,L= 7或者 L = SAT,例子:
- 5L:一个月的最后一个星期四触发
# 用来指定具体的周数,#前面代表星期,#后面代表本月第几周,例子:
- 2#2:本月第二周的星期一,5#3表示本月第三周的星期四,因此,5L这种形式只不过是#的特殊形式而已
年
允许值范围: 1970~2099 ,允许为空
*:每年触发。例子:0 0 0 1 1 ? *代表每年1月1日执行1次
,:指定的时间点触发。例子:0 0 0 1 1 ? 2022,2023 代表2022年1月1日、2023年1月1日执行
-:指定的范围内触发。例子:0 0 0 1 1 ? 2022-2032代表从2022年1月1日开始到2032年1月1日结束,每隔1年执行1次
/:触发步进,/前面的值代表初始值(没有则为0),后面的值代表偏移量。例子:
- 0 0 0 1 1 ? 2022/2代表从2022年开始,每隔2年执行1次
- 0 0 0 1 1 ? /2代表从当前年1月1日开始,每隔2年执行1次
- 0 0 0 1 1 ? 2022-2032/2代表从2022年1月1日开始,2032年1月1日结束,每隔2年执行1次