記憶體不足崩潰後如何重新啟動 SystemD 服務(螢幕)

記憶體不足崩潰後如何重新啟動 SystemD 服務(螢幕)

我正在使用 SystemD 服務透過螢幕控制基於 Java 的伺服器(好吧!它的 Minecraft :D),如下所示:

[Unit]
Description=mc@auth
After=local-fs.target network.target mysqld.service

[Service]
WorkingDirectory=/home/minecraft/auth
User=minecraft
Group=minecraft
Type=forking

Restart=always
RestartSec=5s

ExecStart=/bin/bash ./server.sh start

ExecStop=/bin/bash ./server.sh stop
ExecStop=/bin/bash -c "while ps -p $MAINPID > /dev/null; do /bin/sleep 1; done"

[Install]
WantedBy=multi-user.target

server.sh start只是啟動 jar 檔案java -jar Example.jar並輸出控制台。

當出現記憶體不足錯誤時如何重新啟動此服務?當 OOM 發生時,Java 似乎不會退出回 shell。

答案1

java -jar Example.jar -XX:+CrashOnOutOfMemory在Systemd 單元檔案中使用server.sh並設定。Restart=on-failure

相關內容