如果 python 脚本结束,最好的重启方式是什么? (Ubuntu 18.04)

Best way to restart python script if it ends? (Ubuntu 18.04)

我有几个用 Python 编写的 Discord 机器人,它们会在几个小时后出于某种原因停止。我想要一种方法来监视它们并在它们出现故障时重新启动它们。我已经在寻找一些解决方案,包括 bash 脚本、crontab 和 systemd,但其中 none 似乎对我有用。

即使是一个简单的 while true bash 脚本,它也会因为某些原因而崩溃。 crontab 不会 运行 因为我认为是环境问题,显然 systemd 仅用于服务?

所有 python 脚本都位于 /home/username/folder/script.py

我还希望能够轻松地暂停重新启动脚本的服务,因为偶尔我必须使用 git.

更新代码

monit 将满足您的需要,您可以将其配置为监视您的 python 脚本并在失败时重新启动它们。

配置起来有点快

参考: https://mmonit.com/monit/

我想出了如何用 systemd 解决我的问题。

首先导航到:

/etc/systemd/system

然后以 root 身份创建一个新服务:

sudo nano example.service

像这样制作您的服务文件:

[Unit]
Description=Restarts example.py if it closes

[Service]
User=your username
WorkingDirectory=/directory/of/script
ExecStart=/usr/bin/python3 /directory/of/script/example.py
Restart=always

[Install]
WantedBy=multi-user.target

然后输入这个让 systemd 重新加载服务文件。

sudo systemctl daemon-reload

然后你就可以开始你的服务了:

sudo systemctl start example.service

最后,检查您的服务状态:

sudo systemctl status example.service