Arrancar Java Como servicio Linux Ubuntu
Este ejemplo funciona con un simple wrapper para arrancar un programa Java como servicio. Necesitas ser usuario root.
Instrucciones:
- Crea un archivo en la carpeta /etc/init.d/ puedes usar nano, vi, etc y pega el ejemplo que está debajo ex. sudo vi /etc/init.d/mytestserv
- Modifica en el script el SERVICE_NAME, PATH_TO_JAR, según sea necesario y elige un PID_PATH_NAME para el archivo que se va a crear que contendrá el ID de tu servicio.
- Da permisos de ejecución ex. sudo chmod +x /etc/init.d/mytestserv
- Comprueba que funciona, para o reinicia ex. sudo service mytestserv start o sudo service mytestserv stop o sudo service mytestserv restart
Ejemplo:
#!/bin/sh SERVICE_NAME=MyService PATH_TO_JAR=/usr/local/MyProject/MyJar.jar PID_PATH_NAME=/tmp/MyService-pid case $1 in start) echo "Starting $SERVICE_NAME ..." if [ ! -f $PID_PATH_NAME ]; then nohup java -jar $PATH_TO_JAR /tmp 2>> /dev/null >> /dev/null & echo $! > $PID_PATH_NAME echo "$SERVICE_NAME started ..." else echo "$SERVICE_NAME is already running ..." fi ;; stop) if [ -f $PID_PATH_NAME ]; then PID=$(cat $PID_PATH_NAME); echo "$SERVICE_NAME stoping ..." kill $PID; echo "$SERVICE_NAME stopped ..." rm $PID_PATH_NAME else echo "$SERVICE_NAME is not running ..." fi ;; restart) if [ -f $PID_PATH_NAME ]; then PID=$(cat $PID_PATH_NAME); echo "$SERVICE_NAME stopping ..."; kill $PID; echo "$SERVICE_NAME stopped ..."; rm $PID_PATH_NAME echo "$SERVICE_NAME starting ..." nohup java -jar $PATH_TO_JAR /tmp 2>> /dev/null >> /dev/null & echo $! > $PID_PATH_NAME echo "$SERVICE_NAME started ..." else echo "$SERVICE_NAME is not running ..." fi ;; esac
Problemas Frecuentes
- Asegúrate de que tu jar o aplicación java no está terminando por si misma.
- Usa el comando nohub para arrancar la aplicación en background ej. nohup java -jar Myjar.jar &
- Si usas Ubuntu puedes usar sudo update-rc.d mytestserv defaults si quieres que el servicio arranque cuando arranques el SO o sudo update-rc.d mytestserv disable para borrarlo del arranque.