即使 Restart=always,用户服务也会停止

即使 Restart=always,用户服务也会停止

我的服务器上有一个 discord 机器人。我想在 systemd 中创建一个服务,而不是使用 shell 手动启动。我希望机器人在发生故障或停止时重新启动。所以我输入了Restart=always我的服务文件。当告诉机器人停止时,它会重新启动而不会出现任何问题。但运行 3 小时 51 分钟后,服务无缘无故停止,我不知道原因。

该机器人是一个 python 模块,我有一个start_bot.py启动该机器人的 python 脚本。

以下是 journalctl 的输出:

Apr 14 20:49:56 sapinet927 systemd[23065]: Stopping Service du bot du lg de la rez...
Apr 14 20:49:56 sapinet927 python[8408]: Disconnected.
Apr 14 20:49:56 sapinet927 systemd[23065]: lgrez.service: Succeeded.
Apr 14 20:49:56 sapinet927 systemd[23065]: Stopped Service du bot du lg de la rez.

它说机器人停止了,但我不明白为什么。

以下是服务状态:

lgrez.service - Service du bot du lg de la rez
   Loaded: loaded (/home/lgrez/.config/systemd/user/lgrez.service; enabled; vendor preset: enabled)
   Active: inactive (dead)

这是我的服务文件~/.config/systemd/user/lgrez.service

[Unit]
Description=Service du bot du lg de la rez
After=network.target
StartLimitIntervalSec=0

[Service]
Type=simple
WorkingDirectory=/home/lgrez
ExecStart=/home/lgrez/env/bin/python -u start_bot.py .env
Restart=always
RestartSec=1
StandardOutput=journal+console
StandardError=journal+console
 
[Install]
WantedBy=multi-user.target

我的服务文件有问题吗?

我用 启用了它systemctl --user enable lgrez

答案1

问题是,当用户注销时,systemd 会终止所有用户服务,如下所示:https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=825394

为了绕过这个问题我使用了:

loginctl enable-linger lgrez

KillUserProcesses=no放入/etc/systemd/logind.conf

现在它运行良好。

相关内容