如何配置crontab实现两个耗时2天的测试任务交替运行
crontab双任务交替运行配置方案
原思路存在逻辑错误:能被4整除的日期天然满足「同时被2和4整除」的判定条件,会导致两个任务在同一天触发,完全无法实现交替运行的效果。
要实现两个任务交替运行、单任务执行周期2天的需求,正确的触发规则应为:
- 任务1:当月日期数除以4余数为0时触发,每4天执行1次
- 任务2:当月日期数除以4余数为2时触发,每4天执行1次
两者触发时间刚好间隔2天,正好可以衔接各自2天的运行时长,实现交替执行。
具体配置示例
crontab中可以嵌入shell判断逻辑实现自定义日期判定,注意crontab语法中%属于特殊字符需要转义,要写成\%。
假设你需要在每天0点触发测试任务,配置如下:
# 任务1:当月日期模4等于0时触发,比如4号、8号、12号... 0 0 * * * [ $((`date +\%d` \% 4)) -eq 0 ] && /bin/bash /path/to/你的第一个测试脚本路径.sh # 任务2:当月日期模4等于2时触发,比如2号、6号、10号... 0 0 * * * [ $((`date +\%d` \% 4)) -eq 2 ] && /bin/bash /path/to/你的第二个测试脚本路径.sh
如果需要调整触发时间,比如改成每天凌晨2点执行,只需把每行开头的0 0修改为0 2即可。
边界情况说明
基于当月日期的判定规则会受月份天数影响(比如2月只有28/29天、大月有31天),月末到下月初可能出现最多2天的执行空窗或偏差。如果你对执行间隔的精度要求极高,可以在测试脚本中新增状态记录逻辑,每次执行时校验距离上次执行的间隔、切换执行的任务类型,不依赖自然日期判定。
内容的提问来源于stack exchange,提问作者Maciek Kucharski
相关产品推荐
相关产品推荐

