如何在crontab中用两条规则配置36小时执行的定时命令?
配置每36小时运行一次crontab的方法
crontab原生不支持直接配置36小时的执行周期,因此需要用两条错开时间的规则组合实现,配置步骤如下:
- 执行
crontab -e进入当前用户的crontab编辑界面,若需要配置全局执行的任务,可执行sudo crontab -e编辑root用户的crontab配置。 - 在编辑界面末尾新增两行规则,将示例中的路径替换为你实际要运行的目标命令即可:
# 从每月1号开始,每3天的0点执行一次 0 0 */3 * * /path/to/your/target-command # 从每月2号开始,每3天的12点执行一次 0 12 2-31/3 * * /path/to/your/target-command
规则说明
- 两条规则各自的触发间隔为72小时,两个规则的触发时间错开36小时,组合后即可实现整体每36小时触发一次目标命令的效果。
- 上述规则基于日期匹配实现,受月份天数影响,月底到下月初的间隔可能出现偏差。如果需要严格保证36小时的执行间隔,可在目标脚本开头增加时间校验逻辑:记录上次执行的时间戳,当前运行时先判断和上次执行的间隔是否达到36小时,未达到则直接退出脚本即可。
- 如果你使用的crontab版本不支持步长语法,可以把日期列的匹配值手动列出:第一条规则日期列写
1,4,7,10,13,16,19,22,25,28,31,第二条规则日期列写2,5,8,11,14,17,20,23,26,29即可。
内容的提问来源于stack exchange,提问作者dawnslayer
相关产品推荐
相关产品推荐

