我在远程服务器上运行了一个python脚本,我开始使用nohup python myscript.py &
。如果脚本停止,我想重启脚本。我检查了this answer,但我不确定这是否会启动脚本。我相信它会检查脚本是否已停止并在脚本停止时启动它。此外,它需要脚本的pid
,每次重新启动脚本时都会有所不同。
我还检查了this answer,但我不确定nohup
命令是否可以给until.. do
循环。它不会只是每1秒后重启我的脚本吗?任何人都可以指定如何编写脚本以重新启动脚本以防止它停止吗?
答案 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