Linux作业调度程序在终止后2小时启动脚本

时间:2014-01-06 17:00:49

标签: linux events scheduler jobs

我有一个脚本运行未知的时间段取决于它的输入。它可以在少量数据可用时运行一小时,或者如果要处理大量数据则可以运行8小时。 我需要定期运行它,特别是在上一次运行完成后2小时。

这样做有效吗?

3 个答案:

答案 0 :(得分:0)

使用'at'代替'cron'并在脚本末尾添加:

at now +2 hours $*

这意味着每次出现都是链接的 - 所以如果它以异常方式终止,则不会安排下一个实例 - 但我不认为没有添加大量代码/复杂性就会有更强大的解决方案。

答案 1 :(得分:0)

我不喜欢提出的at解决方案,所以这里有另一个解决方案:

  1. 使用cron每两小时启动一次

  2. 启动时,您的应用程序(*)会检查是否有pid文件。

    2.1如果它存在,则可能有另一个实例正在运行:读取文件的内容(pid)并查看该pid是否是现有进程的pid,僵尸进程或其他内容。如果它是正在运行的现有进程的pid,则退出。如果它是僵尸进程的pid,则前一个作业意外结束,然后你必须删除pid文件并转到步骤3.否则。

  3. 删除pidfile后,您创建一个新的pid文件并将其放入其中。然后继续完成你的工作。

  4. *:为了不增加复杂性,我引用的这个应用程序也可以是一个使用exec生成代码的简单包装器。

    此解决方案也可以很容易编写脚本。

    希望它有所帮助,

    SnoopyBBT

答案 2 :(得分:0)

如果它看起来很复杂,这是另一个更脏的解决方案:

while true ; do
    ./your_application
    sleep 7200
done

希望这有帮助,

SnoopyBBT