GNU/Linux >> Tutoriels Linux >  >> Linux

Exécuter une application Java en tant que service sous Linux

J'ai écrit un autre wrapper simple ici :

#!/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 

Vous pouvez suivre un tutoriel complet pour init.d ici et pour systemd (ubuntu 16+) ici

Si vous avez besoin du journal de sortie, remplacez le 2

nohup java -jar $PATH_TO_JAR /tmp 2>> /dev/null >> /dev/null &

lignes pour

nohup java -jar $PATH_TO_JAR >> myService.out 2>&1&

Une solution simple consiste à créer un script start.sh qui exécute Java via nohup, puis stocke le PID dans un fichier :

nohup java -jar myapplication.jar > log.txt 2> errors.txt < /dev/null &
PID=$!
echo $PID > pid.txt

Ensuite, votre script d'arrêt stop.sh lirait le PID du fichier et tuerait l'application :

PID=$(cat pid.txt)
kill $PID

Bien sûr, j'ai omis certains détails, comme vérifier si le processus existe et supprimer pid.txt si vous avez terminé.


Le script d'initialisation du service Linux est stocké dans /etc/init.d . Vous pouvez copier et personnaliser /etc/init.d/skeleton fichier, puis appelez

service [yourservice] start|stop|restart

voir http://www.ralfebert.de/blog/java/debian_daemon/. C'est pour Debian (donc, Ubuntu aussi) mais convient à plus de distribution.


Linux
  1. Linux - Comment exécuter un script sur le verrouillage/déverrouillage de l'écran ?

  2. Service du système d'exploitation Linux "nfs"

  3. Service du système d'exploitation Linux 'microcode_ctl'

  4. Service d'exploitation Linux "hplip"

  5. Service d'exploitation Linux "irqbalance"

Comment exécuter un script Shell en tant que service SystemD sous Linux

Service d'exploitation Linux "yppasswdd"

Service d'exploitation Linux "xendomains"

Service de système d'exploitation Linux « nscd »

Service d'exploitation Linux "squid"

Service d'exploitation Linux "smartd"