メモリ不足クラッシュ後に SystemD サービス (画面) を再起動する方法

メモリ不足クラッシュ後に SystemD サービス (画面) を再起動する方法

私は SystemD サービスを使用して、次のような画面で Java ベースのサーバー (OK! 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 startjar ファイルを起動してjava -jar Example.jarコンソールに出力するだけです。

メモリ不足エラーが発生した場合、このサービスを再起動するにはどうすればよいでしょうか? OOM が発生しても、Java はシェルに戻らないようです。

答え1

java -jar Example.jar -XX:+CrashOnOutOfMemoryで使用しserver.shRestart=on-failureSystemd ユニット ファイルで設定します。

関連情報