我有一个每小时运行一次的cron作业。它访问xml提要。如果xml提要是不可用的(这似乎每天发生一次),则会创建一个“失败”文件。此“失败”文件中包含一些元数据,并在脚本再次运行并且XML源再次运行时的下一个小时被删除。
我想要的是制作第二个cron作业,在第一个作业后运行几分钟,查看目录中的“失败”文件,如果在那里,则重试第一个cron作业。
我知道如何设置cron作业,我只是不知道如何使这样的脚本有条件。我是以完全错误的方式解决这个问题吗?
答案 0 :(得分:2)
可能。也许你最好做的就是让原始脚本睡眠并重试(有限次数)。
Sleep是一个shell命令,shell支持循环,所以它看起来像:
for ((retry=0;retry<12;retry++)); do
try the thing
if [[ -e my_xlm_file ]]; then break; fi
sleep 300
# five minutes later...
done
答案 1 :(得分:1)
作为要运行的命令,请尝试:
/bin/bash -c 'test -e failurefile && retrycommand -someflag -etc'
如果存在故障文件,则运行retrycommand
答案 2 :(得分:1)
为什么不在设置脚本成功完成后触摸状态文件。让它每5分钟运行一次,然后对脚本进行第一次检查,看看状态文件是否小于60分钟,如果是年轻,则退出,如果是旧的,则获取。
答案 3 :(得分:0)
我同意MarkusQ你应该在原来的工作中重试,而不是创造另一份工作去看第一份工作。
请查看此工具,以便更轻松地重试:https://github.com/kadwanev/retry
您可以非常轻松地将原始cron包装在重试中,并且失败文件的最终存在将指示它是否在重试后失败。