python - 每隔 x 小时运行一个进程

标签 python linux unix

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

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

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

  • 如果进程已经在运行,则终止该进程并休眠 3 小时。
  • 休眠 3 小时后,如果进程没有运行,请通过执行上述 python 命令重新启动进程,然后休眠 3 小时。
  • 重复上述过程。

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

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

最佳答案

这似乎是 crontab 的理想用例。我会编写 2 个 bash 脚本,通过 cron 每 3 小时运行一次。所以像下面这样:

#ScriptA.sh
ifProcessRunning
    KillProcess

#ScriptB.sh
ifProcessNotRunning
    StartProcess

#CronTab
0,6,12,18 * * * * ScriptA.sh
3,9,15,21 * * * * ScriptB.sh

要终止进程,您可以使用任何普通的 unix 命令,因此通过管道传输 ps aux 并在 shell 脚本中运行kill 就可以了。

希望这对您有所帮助——如果您希望我进一步充实内容,请发表评论!

关于python - 每隔 x 小时运行一个进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47424885/

相关文章:

linux - 清空 ksh 中的现有数组

c - 从命令行将输出重定向到 C 中的文本文件

python - RNN 预测值在第一个 epoch 之后有所不同

python - 在 Pandas 中使用 groupby 来计算一列中与另一列相比的内容

linux - linux kill 命令会终止子进程吗?

Android 挂起模式

python - 为什么 '1 + lambda: 1' 是语法错误,而 '1 + (lambda: 1)' 是类型错误?

python - 使用 bool 过滤 DataFrame 的 Pandas 列

c++ - C++在目录中对文件名进行排序

ubuntu - 尝试将文件夹/文件从远程服务器传输到本地时,协议(protocol)错误 : mtime. 秒不存在