crontab定时任务时间设置
运维工作中经常需要使用定时任务管理,那么也需要设置定时任务的执行时间频率,一般情况下设置时间都比较容易,例如:每分钟、每10分钟、每小时这种可以直接被60整除的数字。但是总有写特殊需求:例如每40分钟,每50分钟这种,如果直接写成*/40、*/50执行时间并不是每40分钟或者每50分钟执行一次,而是每小时的40分或者50分执行一次,并每小时整点的时候执行一次。
那么如何实现特殊时间的执行,下面我用每40分钟为例说明:
每40分钟执行一次,即是在第一个小时0分,40分,第二个小时20分,第三个小时0分,40分这样执行下去:
执行次数 | 分钟 | 小时 |
---|---|---|
1 | 0 | 0 |
2 | 40 | 0 |
3 | 20 | 1 |
4 | 0 | 2 |
5 | 40 | 2 |
6 | 20 | 3 |
n | … | … |
如上表,可以发现这实际上是有规律的,实际上执行时间为,每2个小时在整点0分执行一次,在20分执行一次,在40分执行一次,那么我们可以写成:但是20分的时候都是奇数小时,0分和40分的时候是偶数小时,所以我们可以写成:
0 0-23/2 * * * 定时任务
40 0-23/2 * * * 定时任务
20 1-23/2 * * * 定时任务
这样就可以实现每40分钟执行一次定时任务。
我最后尝试了下每50分钟,是在是太多条了,建议使用脚本或者打死提需求的人。