我在 Linux 上有一个长时间运行的 python 脚本,在某些情况下它需要执行命令来停止并重新启动自身。所以,我想要一个外部脚本(bash 或 python 中的)来执行命令来重新启动原始脚本。让我详细说明一下。
假设我有original_script.py。在 Original_script.py 中,我将其置于无限循环中:
if some_error_condition:
somehow call external script external.sh or external.py
假设我可以调用 external.sh 并且它包含以下内容:
#!/bin/bash
command_to_restart_original_script
最后,我知道了命令“command_to_restart_original_script”。那不是问题。需要的是“以某种方式调用外部脚本external.sh”的python 命令。我需要外部脚本(这是一个子进程)在父进程original_script.py 重新启动时继续运行,即我需要分离/守护子进程。我该怎么做呢?
我在不同的地方找到了很多建议,但唯一对我有用的答案是:如何在后台启动并运行外部脚本?
import subprocess
subprocess.Popen(["nohup", "python", "test.py"])
就我而言,我运行了一个名为 longrun.sh 的脚本,因此实际命令是:
import subprocess
subprocess.Popen(["nohup", "/bin/bash", "longrun.sh"])
我使用 run.py 对此进行了测试:
import subprocess
subprocess.Popen(["nohup", "/bin/bash", "longrun.sh"])
print "Done!"
我验证(使用 ps -ax | grep longrun)longrun.sh 确实在 run.py 退出后很长一段时间内在后台运行。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)