如何保留我的 python-daemon 进程 运行 或在失败时重新启动它?

How can I keep my python-daemon process running or restart it on fail?

我有一个 python3.9 脚本,我想要 运行 24/7。在其中,我使用 python-daemon 来保持它 运行 像这样:

import daemon

with daemon.DaemonContext():
   %%script%%

它工作正常,但几个小时或几天后,它只是随机崩溃。我总是以 sudo 开头,但我似乎无法弄清楚在哪里可以找到用于调试的守护进程的日志文件。我可以做些什么来确保日志记录?如何在崩溃后保留脚本 运行 或自动重启?

您可以找到完整代码 here

我将从熟悉这两个问题开始:

  • How to make a Python script run like a service or daemon in Linux

看来您需要一位主管来确保您的 script/daemon 仍然是 运行。你可以看看supervisord.

如果您真的想 运行 一个脚本 24/7 在后台运行,最干净和最简单的方法肯定是创建一个 systemd 服务。

已经有很多关于如何做到这一点的描述,例如here

systemd的优点之一,除了可以在启动时启动服务外,还可以在失败后重新启动。

Restart=on-failure

如果您只想在崩溃后自动重启程序,最简单的方法可能是使用 bash 脚本。

您可以使用 until loop,它用于执行一组给定的命令,只要给定条件的计算结果为 false。

#!/bin/bash

until python /path/to/script.py; do
    echo "The program crashed at `date +%H:%M:%S`. Restarting the script..."
done

如果命令 returns 非零 exit-status,则重新启动脚本。