记录一些特殊的cron表达式配置,具体例子均以分钟为准,但是搞懂原理之后月/日/时/分/秒这几个位置只要稍作修改都是可以用的
起始时间
通常写的0/10表示从0分开始每隔10分执行一次,但是cron表达式可以使用x/y
的形式来表示从x分开始每隔y分执行一次,如果需要从5分钟开每隔十分钟执行一次那么就是5/10
不可整除间隔与大时间间隔
如果时间间隔不能被60整除,例如时间间隔40分钟直接写0/40的话实际执行时间是每小时的40分一次,与实际要求不符,另一种是间隔大于60分钟的场景,在这两种场景下,可以通过拆分多条cron表达式来解决,具体计算逻辑如下
- 取时间间隔y和60的最小公倍数并除以60,得到n,这代表按照几个时间间隔后分钟数会重复,最后需要拆分的cron表达式最多是n条
- 根据上一步算出的时间,计算出x小时内所有的时间点,时间需要包含从0开始的小时数m
- 找到相同小时的时间点,对应cron表达式小时位是m/n,分钟位是计算出的分钟数
例如从3分钟开始间隔40分钟
- 取40和60的最小公倍数得到120,120/60得到2
- 推算实际运行时间是0:03,0:43,1:23
- 合并得到两条cron表达式(忽略其他部分)
0/2 3,43
,1/2 23