作者:姚扰腾 | 来源:互联网 | 2023-08-28 11:26
概念
https://crontab.guru/
Jenkins cron不是标准的cron表达式
第一个 * 表示每个小时的第几分钟,取值0~59
H * * * *
H:每小时执行一次
第二颗 * 表示小时,取值0~23
* 15 * * * 表示每天下午3点
* 1 * * * 表示每天凌晨1点
第三颗 * 表示一个月的第几天,取值1~31
* 1 5 * * 表示每月5日凌晨1点
第四颗 * 表示第几月,取值1~12
* 15 5 1 * 表示每年几月执行
第五颗 * 表示一周中的第几天,取值0~7,其中0和7代表的都是周日
测试
第一个*
第一个 * 表示每个小时的第几分钟,取值0~59
在当前时间后的,每五分钟去执行一次
第二个*
第二颗 * 表示小时,取值0~23
在每天的凌晨两点后,每隔五分钟构建一次
在每天的凌晨两点后,每隔30分钟构建一次
在每天每隔两个小时后的每隔30分钟构建一次
第三个 *
第三颗 * 表示一个月的第几天,取值1~31
* 1 5 * * 表示每月5日凌晨1点
第四个*
第四颗 * 表示第几月,取值1~12
在1到6月的1号的凌晨两点,每隔30分钟构建一次
在1到6月的1号,和10月到12月的凌晨两点,每隔30分钟构建一次
第五个*
第五颗 * 表示一周中的第几天,取值0~7,其中0和7代表的都是周日
周一到周六,并且在1到6月的1号,和10月到12月的凌晨两点,每隔30分钟构建一次
其上面也是说明了意思
不是标准corn表达式的原因:H、/
/
:表示每隔多长时间,比如 */10 * * * * 表示 每隔10分钟
H
的意思是:hash散列值,以job名取值,获取到以job名为入参的唯一值,相同名称值也相同,这个偏移量会和实际时间相加,获得一个真实的运行时间
意义在于:不同的项目在不同的时间运行,即使配置的值是一样的,比如 都是 15 * * * * ,表示每个小时的第15分钟开始执行任务,那么会造成同一时间内在Jenkins中启动很多job,换成 H/15 * * * * ,那么在首次启动任务时,会有随机值参与进来,有的会在17分钟启动 有的会在19分钟启动,随后的启动时间也是这个值。这样就能错开相同cron值的任务执行
了。
H的值也可以设置范围
表示一小时内的任意时间(0-60之间的hash值;如果job不变化的话,当第一次取出25,那么后面也是25,)
H * * * * 每10分钟
*/10 * * * * 每10分钟,可能是7,17,27,起始时间hash,步长不变
H/10 * * * * 每个周一至周六,凌晨3点45 执行1次
45 3 * * 1-6 每个周一至周六,凌晨3点45 ,凌晨4点45,凌晨5点45 各执行1次
45 3-5 * * 1-6 在40~48之间取值 其他同上
H(40-48) 3-5 * * 1-6 每个周一至周六,凌晨3点45 ,凌晨5点45 各执行1次
45 3-5/2 * * 1-6 0点开始,每间隔2小时执行一次 0:45、2:45、4:45
45 0-6/2 * * 1-6 * * 1-6
如果没有H了,便不会再随机了