Cron表达式解析

测试过程中经常用到调度系统,往往某个调度任务我需要问开发它是如何执行的。比如:凌晨1:30执行、每天的每小时30分执行、10分钟执行一次等等。这个执行规则的配置来源于cron表达式,学会了我们自己就能直接查看。

解析:

一、cron表达式规则:

cron表达式,以空格作为分隔符,分为6个参数或者7个参数,每个参数代表不同的单位。

从左到右分别代表:秒、分钟、小时、日、月、星期几、年。

但是年参数,不是必须的,可以省略。可以看到上面截图中的cron表达式均为6个参数,因为没有年的参数。下面也以6个参数进行学习。

二、cron表达式各个参数的取值:

秒范围:(0-59)

分钟范围:(0-59)

小时范围:(0-23)

日范围:(1-31)

月范围:(1-12 或 JAN-DEC)

星期几范围:(0-6 或 SUN-SAT)

年范围:(可选,1970-2099)

以下面公式为例:0 0 21 * * ?  

先看有值的部分,秒位是0,分钟位也是0,小时位是21点(后面参数看不懂,一会讲)

拼起来理解这个调度任务是:每天的21:00:00执行1次;

三、cron表达式的常用特殊字符

* :代表所有,位于秒位,就是所有秒;位于小时位,就是所有小时都执行;

/ :代表步长(频率),例如:分钟为 0/20(也可以写为*/20),就是每20分钟执行1次。如果位于秒位,就是每20秒执行1次;

- :代表范围,例如:分钟位为:0-3,代表0至3分钟的每1分钟。(0分,1分,2分,3分)

, :代表指定多个值,例如:0,1,2,3  与 0-3  代表意义一样,只是写法不同

? :(无意义占位符):用于指定一个字段没有具体的取值,只能与其他字段一起使用。

注意:日和星期不限制范围的话,不能同时用星号指定,只能1个是星,一个是问号。哪个是星,哪个是问号无所谓。所以这也是上面截图中为什么同一个cron表达式,有星有问号的缘故。

四、举例解析:

6 3 21 * * ? :秒数是6,分钟数是3,小时数是21;日和月和星期未指定,合起来就是 每天的21:03:06执行1次;

0 0 2 27 9 ? :秒数是0,分钟数是0,小时数是2,日期是27号,月份是9月;合起来就是每年的9月27日 凌晨2:00执行该任务;

*/20 * * * * ?:秒数是每20秒执行1次;

0 0/10 0-6 * * ? :秒是0秒,分钟是每10分钟执行1次;小时是0至6小时;日和月和星期未指定。合起来就是:每天的0到6点,每10分钟整执行1次;

0 0 3-5 * * ? :秒数是0,分钟数是0,小时是3--5小时;日和月和星期未指定。合起来就是:每天的3:00至5:00,每小时执行1次;或者说每天凌晨3:00,4:00 ,5:00点,每小时执行一次任务,共3次;

0 0 3,4,5 * * ? :与上面0 0 3-5 * * ?表达式一致,仅写法不同;

* 0 3 * * ?":秒数是*,代表所有秒,分钟数是0,小时是3;日和月和星期未指定。合起来就是:每天的凌晨3:00:00时候开始,每秒都执行1次,一共执行60次,当进入3:01:00时候会停止执行;

五、cron表达式在线小工具

在线Cron表达式生成器-奇Q工具网

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值