私は 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 start
jar ファイルを起動してjava -jar Example.jar
コンソールに出力するだけです。
メモリ不足エラーが発生した場合、このサービスを再起動するにはどうすればよいでしょうか? OOM が発生しても、Java はシェルに戻らないようです。
答え1
java -jar Example.jar -XX:+CrashOnOutOfMemory
で使用しserver.sh
、Restart=on-failure
Systemd ユニット ファイルで設定します。