Systemd
systemctl 在 ssh 到 AWS 實例之前不會重新啟動服務
我
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
。進一步閱讀