在后台运行 Python 脚本并在崩溃时重新启动它

在后台运行 Python 脚本并在崩溃时重新启动它

我有一个非常简单的 Python 脚本,我希望它始终在我的 ubuntu 12.04 服务器上运行。我考虑过使用 upstart + monit。问题是这些工具对于像我这样的普通人来说似乎相当复杂,而且我在网上找不到一个简单的示例。

upstart + monit 是不是有点过了?/有人知道更简单的替代方案吗?/或者好的教程?

答案1

取自这个答案

您可以编写一个 bash 脚本monitor.sh,启动您的 python 脚本,并在脚本崩溃时重新启动它,但如果脚本正常退出则不会重新启动:

#!/bin/bash
until myscript.py; do
    echo "'myscript.py' crashed with exit code $?. Restarting..." >&2
    sleep 1
done

然后只需在后台启动监控脚本:

nohup monitor.sh &

作为替代方案nohup,您还可以考虑tmux或者屏幕用于运行后台进程。

答案2

上面的答案很棒。目前我无法发表评论,所以也许可以改进这里的答案。

您甚至可能想要为“myscript”编写一个函数,因为它是一个 python 脚本,而不是在 bash 环境下运行。

所以,

#!/bin/bash

myscript(){
    python3 myscript [args..]
}

until myscript; do
    echo "'myscript' crashed with exit code $?. Restarting..." >&2
    sleep 1
done

刚接触 Python 或 Bash 的人不会知道这个小东西。可能会对他们有帮助。一开始,我曾经为这些小东西而苦恼。不想让其他人也这样!

相关内容