进一步阅读

进一步阅读

我在我的 AWS EC2 实例上托管一个实例bitcoind,并使用以下服务文件将其作为用户服务:

[Unit]
Description=Bitcoind

[Service]
Type=simple
ExecStart=/usr/local/bin/bitcoind
Restart=always

[Install]
WantedBy=default.target

正常情况下一切都很好。我注意到有时bitcoind重新启动的次数相当多,但那是另一个故事了,systemctl至少从角度来看它可以重新启动。

这里我包含了一个日志,其中显示了正常部分和有问题的部分:

Mar 02 10:39:46 ip- systemd[2751]: Started Bitcoind.
Mar 02 10:40:07 ip- systemd[2751]: bitcoind.service: Service hold-off time over, scheduling restart.
Mar 02 10:40:07 ip- systemd[2751]: Stopped Bitcoind.
Mar 02 10:40:07 ip- systemd[2751]: Started Bitcoind.
Mar 02 21:06:26 ip- systemd[2751]: Stopping Bitcoind...
Mar 02 21:06:28 ip- systemd[2751]: Stopped Bitcoind.
Mar 03 03:37:45 ip- systemd[28091]: Started Bitcoind.
Mar 03 03:59:15 ip- systemd[28091]: bitcoind.service: Service hold-off time over, scheduling restart.
Mar 03 03:59:15 ip- systemd[28091]: Stopped Bitcoind.
Mar 03 03:59:15 ip- systemd[28091]: Started Bitcoind.
Mar 03 04:01:09 ip- systemd[28091]: Started Bitcoind.
Mar 03 04:01:16 ip- systemd[28091]: Started Bitcoind.
Mar 03 04:01:22 ip- systemd[28091]: bitcoind.service: Service hold-off time over, scheduling restart.
Mar 03 04:01:22 ip- systemd[28091]: Stopped Bitcoind.
Mar 03 04:01:22 ip- systemd[28091]: Started Bitcoind.
Mar 03 04:14:35 ip- systemd[28091]: Stopping Bitcoind...
Mar 03 04:14:35 ip- systemd[28091]: Stopped Bitcoind.
Mar 03 04:15:44 ip- systemd[13180]: Started Bitcoind.

有时,服务会停止但不会systemctl重新启动。仅当我 ssh 到实例时,它才会重新启动,并且似乎“让一切再次恢复正常”。

从日志来看,这发生在

Mar 02 21:06:26 ip- systemd[2751]: Stopping Bitcoind...
Mar 02 21:06:28 ip- systemd[2751]: Stopped Bitcoind.
Mar 03 03:37:45 ip- systemd[28091]: Started Bitcoind.

显然systemctl注意到了 的停止bitcoind,但它只会重新启动,直到我 ssh 到实例。

有什么指示我可以进一步解决该问题吗?感谢任何帮助,我将尽力提供尽可能多的信息。

答案1

我已将其作为用户服务 [...] 仅当我 ssh 到实例时才会重新启动 [...]

systemd 的每个用户实例仅在您有一个或多个活动登录会话时运行。如您在日志中看到的,它有三个实例,具有三个不同的进程 ID。当您的最后一个登录会话挂断时,systemd-logind停止 systemd 的每个用户实例,并在下一个登录会话开始时启动一个新的实例。当然,如果没有服务管理器,托管服务就不会运行。

您可以使用enable-linger该命令的子命令更改此设置loginctl

进一步阅读

相关内容