我需要设置一个每5天运行一次的cronjob,但我需要它在特定日期开始。
例如,它将每5天执行一次卷曲,但我希望第一次执行是下周。
这是可能还是我应该等待当天的设置呢?
答案 0 :(得分:1)
某些cron
实施可能会为您提供当天的*/5
语法,甚至是16-31/5
语法含义"从16日开始每5天发布一次"。
第一个问题是,接下来的几个月你需要第二个*/5
条目。这种语法的第二个问题是你的脚本将在每个月的1日,6日,11日,16日,21日,26日和31日触发。这些固定的日子通常不是每隔5天就会发生一次"每隔一天#34;
您的解决方案是每天使用cron
触发您的工作(可能从您选择的第一天开始)并在您的脚本中进行初步计算,以确定您是否是您的第一天天期。如果没有,请立即使用exit 0
结束脚本。
此测试可能与(在bash
)中一样简单:
(( $(date +"%j") % 5 == 0 )) || exit 0
请注意,使用这样一行,如果一年中的某一天是5的倍数,则会执行该脚本。对于*/5
中的crontab
,这可能不是每5天一次一年的变化,但它是一个非常好的近似。你有这个想法,你可能会做得更好。
[update]这当然可以添加到cron执行的命令中:
SHELL=/bin/bash
mn h * * * (( $(date +"%j") % 5 == 0 )) && my_command