如何修改Crontab表达式实现每周跳过周日0点的1次定时运行
Cron表达式修改解决方案
你原有的0 0,8,16 * * * 规则是每天0点、8点、16点各执行1次,一周7天共21次,要跳过每周日0点的执行,有两种通用实现方案:
方案一:双cron表达式(兼容性最优)
拆分为两条独立的cron规则,所有cron实现均支持,无需修改执行命令:
- 周一到周六正常执行3次/天:
0 0,8,16 * * 1-6 - 周日仅执行8点、16点两次:
0 8,16 * * 0
注:周字段中0代表周日,1-6代表周一到周六,符合绝大多数cron实现的取值规则。
方案二:单条crontab记录(适合本地Linux环境)
如果使用的是Linux默认的Vixie cron,可以在原命令前加shell判断,只需要维护一条记录:
0 0,8,16 * * * [ "$(date +\%w\%H)" != "000" ] && 你的实际执行命令
注:
\%w输出当前周几(0为周日),\%H输出当前小时,拼接后值为000就代表周日0点,此时不执行后续命令。
内容的提问来源于stack exchange,提问作者iskandarblue
相关产品推荐
相关产品推荐

