So starten Sie den SystemD-Dienst (Bildschirm) nach einem Out-Of-Memory-Absturz neu

So starten Sie den SystemD-Dienst (Bildschirm) nach einem Out-Of-Memory-Absturz neu

Ich verwende den SystemD-Dienst, um einen Java-basierten Server (OK! Es ist Minecraft :D) über den Bildschirm zu steuern, und zwar wie folgt:

[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 startstartet einfach die JAR-Datei java -jar Example.jarund gibt die Konsole aus.

Wie starte ich diesen Dienst neu, wenn ich eine Fehlermeldung wegen unzureichendem Arbeitsspeicher erhalte? Java scheint bei einem Arbeitsspeichermangel nicht in die Shell zurückzukehren.

Antwort1

Verwenden Sie java -jar Example.jar -XX:+CrashOnOutOfMemoryes server.shund legen Sie es Restart=on-failurein der Systemd-Unit-Datei fest.

verwandte Informationen