我希望从周五下午 5 点开始每小时执行一次 crontab 脚本...到周一凌晨 5 点结束。
该脚本检查本周是否已完成以及当前是否正在运行。如果否/否,则开始任务。
从我的头脑中,我知道我可以这样做:
#Mins Hours DoMonth Months DoWeek
0 5-17 * * 0,6 /bin/echo "Run Script Sat and Sun Days"
0 17-24 * * 0,5,6 /bin/echo "Run Script Fri, Sat, Sun Nights"
0 0-5 * * 6,0,1 /bin/echo "Run Script Sat, Sun, Mon Mornings"
我能想到的所有方式都涉及三个部分(周五晚上、周六/周日全天、周一早上)。
有没有更有效的方法来做到这一点?任何类型的单/双线可以在该时间范围内每小时执行一次此操作?
或者在这个时间范围内对脚本进行简单的检查(如果不在那个时间范围内则退出)会更容易吗?
答案1
如果您只想检查脚本当前是否正在运行,如果没有,则每小时运行一次,您可以执行以下操作:
pgrep -x script-name.sh || script-name.sh
但是除非您为脚本使用了唯一的名称,否则您不会想要这样做 - 不要将其与“echo”一起使用,如上面的示例所示。