GNU/Linux >> Znalost Linux >  >> Linux

Spusťte aplikaci Java jako službu v systému Linux

Zde jsem napsal další jednoduchý obal:

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

Můžete sledovat úplný tutoriál pro init.d zde a pro systemd (ubuntu 16+) zde

Pokud potřebujete výstupní protokol, nahraďte 2

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

řádky pro

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

Jednoduchým řešením je vytvořit skript start.sh, který spustí Java přes nohup a poté uloží PID do souboru:

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

Potom by váš stop skript stop.sh načetl PID ze souboru a ukončil by aplikaci:

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

Samozřejmě jsem vynechal některé detaily, jako je kontrola, zda proces existuje, a odstranění pid.txt pokud jste hotovi.


Skript inicializace služby Linuxu je uložen do /etc/init.d . /etc/init.d/skeleton můžete zkopírovat a přizpůsobit soubor a poté zavolejte

service [yourservice] start|stop|restart

viz http://www.ralfebert.de/blog/java/debian_daemon/. Je to pro Debian (takže také Ubuntu), ale hodí se pro více distribucí.


Linux
  1. Linux – Jak spustit skript na obrazovce uzamčení/odemknutí?

  2. Služba operačního systému Linux „dhcpd“

  3. Služba Linux OS „anacron“

  1. Linux OS Service „iptables“

  2. Linux OS Service ‚síť‘

  3. Služba „portmap“ operačního systému Linux

  1. Služba „audit“ operačního systému Linux

  2. Služba operačního systému Linux „hplip“

  3. Linux OS Service „nerqbalance“