我有一个脚本运行未知的时间段取决于它的输入。它可以在少量数据可用时运行一小时,或者如果要处理大量数据则可以运行8小时。 我需要定期运行它,特别是在上一次运行完成后2小时。
这样做有效吗?
答案 0 :(得分:0)
使用'at'代替'cron'并在脚本末尾添加:
at now +2 hours $*
这意味着每次出现都是链接的 - 所以如果它以异常方式终止,则不会安排下一个实例 - 但我不认为没有添加大量代码/复杂性就会有更强大的解决方案。
答案 1 :(得分:0)
我不喜欢提出的at
解决方案,所以这里有另一个解决方案:
使用cron
每两小时启动一次
启动时,您的应用程序(*)会检查是否有pid文件。
2.1如果它存在,则可能有另一个实例正在运行:读取文件的内容(pid)并查看该pid是否是现有进程的pid,僵尸进程或其他内容。如果它是正在运行的现有进程的pid,则退出。如果它是僵尸进程的pid,则前一个作业意外结束,然后你必须删除pid文件并转到步骤3.否则。
删除pidfile后,您创建一个新的pid文件并将其放入其中。然后继续完成你的工作。
*:为了不增加复杂性,我引用的这个应用程序也可以是一个使用exec
生成代码的简单包装器。
此解决方案也可以很容易编写脚本。
SnoopyBBT
答案 2 :(得分:0)
如果它看起来很复杂,这是另一个更脏的解决方案:
while true ; do
./your_application
sleep 7200
done
SnoopyBBT