Estoy usando el servicio SystemD para controlar el servidor basado en Java (¡OK! Es Minecraft :D) a través de una pantalla como esta:
[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
simplemente inicia el archivo jar java -jar Example.jar
y genera la consola.
¿Cómo reiniciar este servicio cuando aparece el error Sin memoria? Java parece no volver al shell cuando ocurre OOM.
Respuesta1
Úselo java -jar Example.jar -XX:+CrashOnOutOfMemory
en server.sh
y configúrelo Restart=on-failure
en el archivo de unidad Systemd.