如果停止,如何重新启动远程服务器上的python脚本?

时间:2014-04-18 15:37:50

标签: python shell

我在远程服务器上运行了一个python脚本,我开始使用nohup python myscript.py &。如果脚本停止,我想重启脚本。我检查了this answer,但我不确定这是否会启动脚本。我相信它会检查脚本是否已停止并在脚本停止时启动它。此外,它需要脚本的pid,每次重新启动脚本时都会有所不同。

我还检查了this answer,但我不确定nohup命令是否可以给until.. do循环。它不会只是每1秒后重启我的脚本吗?任何人都可以指定如何编写脚本以重新启动脚本以防止它停止吗?

3 个答案:

答案 0 :(得分:3)

而不是编写自己的脚本,您可以使用非常成熟,经过战斗测试的supervisord来为您守护任何脚本。

除了自动重启之外,还提供了许多其他功能,包括开箱即用,它被广泛用于守护python脚本

答案 1 :(得分:1)

如果您需要自己的解决方案,只需使用bash脚本:

#!/bin/bash
while :
do
    python myscript.py
    echo "crashed" >> log
end

使其可执行(chmod + x),然后像nohup ./thisscript.sh &一样运行。

或者让其他软件为您完成(如dm03514建议)。

答案 2 :(得分:0)

如果要从自身内部重新启动它,可以尝试:

import os, sys

os.execv(__file__, sys.argv) #__file__ for current file or one of your choice