Systemd

systemctl 在 ssh 到 AWS 實例之前不會重新啟動服務

  • March 3, 2018

bitcoind在我的 AWS EC2 實例上託管一個,並使用以下服務文件將其作為使用者服務:

[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 到實例。

有什麼方向我可以進一步解決這個問題。任何幫助表示讚賞,我會盡力提供盡可能多的資訊。

我已將其作為使用者服務

$$ … $$僅當我 ssh 到實例時才會重新啟動$$ … $$

systemd 的每使用者實例僅在您有一個或多個活動登錄會話時執行。正如您在日誌中看到的那樣,它的三個實例具有三個不同的程序 ID。當您的最後一個登錄會話掛起時,systemd-logind停止您的每個使用者的 systemd 實例,並在您的下一個登錄會話開始時啟動一個新的實例。自然,如果沒有服務管理器,則託管服務不會執行。

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

進一步閱讀

引用自:https://unix.stackexchange.com/questions/427836