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 start
startet einfach die JAR-Datei java -jar Example.jar
und 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:+CrashOnOutOfMemory
es server.sh
und legen Sie es Restart=on-failure
in der Systemd-Unit-Datei fest.