每隔x个小时运行一个流程

时间:2017-11-22 00:18:48

标签: python linux unix

我有一个python脚本,我正在运行,如下所示:

python3 ./bin/abc.py --log_file ./web/prr.log

现在我需要确保上述过程每3小时运行一次。以下是流程:

  • 如果进程已经运行,则终止进程并休眠3小时。
  • 睡眠3小时后,如果进程未运行,请执行上面的python命令再次启动该进程,然后再睡3个小时。
  • 重复上述过程。

所以意思是,我需要确保我的进程每隔3个小时运行一次,所以我需要找到一种方法来每3小时后终止一次。我想在这里使用watch命令,但不知道我怎么能在这里使用它。我正在使用Ubuntu 14。

注意:我无法修改python脚本,因此我需要从外部修改它。

2 个答案:

答案 0 :(得分:1)

这似乎是crontab的理想用例。我写了2个bash脚本,每3个小时通过cron运行一次。如下所示:

final

为了终止进程,你可以使用任何正常的unix命令,因此在shell脚本中管道#ScriptA.sh ifProcessRunning KillProcess #ScriptB.sh ifProcessNotRunning StartProcess #CronTab 0,6,12,18 * * * * ScriptA.sh 3,9,15,21 * * * * ScriptB.sh 和运行kill可能会有效。

希望这会有所帮助 - 如果你想让我更多地充实你的东西,请发表评论!

答案 1 :(得分:-1)

您可以创建一个bash脚本来检查python脚本是否正在运行。如果是,它将终止脚本。如果没有,它将启动脚本。

#!/bin/bash
if pgrep -f <program name> > /dev/null
    then
         echo "Process is running. Killing"
         kill -9 $(pidof <program name>)
    else
         echo "Process is not running. Starting"
         python <location of the file>
    fi