如何在远程服务器上重新启动停止的Python脚本?

2 投票
3 回答
1682 浏览
提问于 2025-04-18 03:17

我有一个在远程服务器上运行的Python脚本,我是通过输入 nohup python myscript.py & 来启动它的。如果这个脚本停止了,我想要重新启动它。我查看了这个回答,但我不太确定这个方法是否能启动脚本。我觉得它是检查脚本是否停止,如果停止了就重新启动它。而且,它需要脚本的 pid(进程ID),这个每次重启脚本的时候都会不同。

我还查看了这个回答,但我不确定 nohup 命令是否可以和 until.. do 循环一起使用。而且,这样的话不是每隔1秒就会重启我的脚本吗?有没有人能告诉我,怎么写一个脚本来在脚本停止时重新启动它?

3 个回答

0

如果你想让它自己重新启动,可以试试下面的代码:

import os, sys

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

与其自己写一个脚本,不如使用一个非常成熟、经过多次考验的工具supervisord,它可以帮你把任何脚本变成后台运行的程序。

除了可以自动重启,supervisord 还提供了很多其他功能,比如自动记录日志,它在将 Python 脚本变成后台程序时被广泛使用。

2

如果你想要自己的解决方案,可以用一个bash脚本:

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

先把这个脚本设置为可执行(用命令chmod +x),然后像这样运行它:nohup ./thisscript.sh &

或者你也可以让其他软件来帮你完成这个任务(就像dm03514建议的那样)。

撰写回答