GNU/Linux >> Belajar Linux >  >> Linux

Jalankan Aplikasi Java sebagai Layanan di Linux

Saya menulis pembungkus sederhana lainnya di sini:

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

Anda dapat mengikuti tutorial lengkap untuk init.d di sini dan untuk systemd (ubuntu 16+) di sini

Jika Anda memerlukan log keluaran, ganti 2

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

baris untuk

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

Solusi sederhana adalah membuat skrip start.sh yang menjalankan Java melalui nohup dan kemudian menyimpan PID ke file:

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

Kemudian skrip stop stop.sh Anda akan membaca PID dari file dan mematikan aplikasi:

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

Tentu saja saya mengabaikan beberapa detail, seperti memeriksa apakah prosesnya ada dan menghapus pid.txt jika sudah selesai.


Skrip init layanan Linux disimpan ke dalam /etc/init.d . Anda dapat menyalin dan menyesuaikan /etc/init.d/skeleton file, lalu panggil

service [yourservice] start|stop|restart

lihat http://www.ralfebert.de/blog/java/debian_daemon/. Ini untuk Debian (jadi, Ubuntu juga) tetapi lebih cocok untuk distribusi.


Linux
  1. Linux – Bagaimana Cara Menjalankan Script Pada Layar Lock/unlock?

  2. Layanan OS Linux 'dhcpd'

  3. Layanan OS Linux 'anacron'

  1. Layanan OS Linux 'iptables'

  2. 'jaringan' Layanan OS Linux

  3. 'portmap' layanan OS Linux

  1. Layanan OS Linux 'diaudit'

  2. Layanan OS Linux 'nfs'

  3. Layanan OS Linux 'microcode_ctl'