tcpip соединение отказано при использовании в качестве службы в raspbian - PullRequest
0 голосов
/ 08 мая 2018

У меня есть jar файл, который слушает запросы tcpip и отправляет данные соответственно. этот jar файл должен быть запущен на службе в raspbian.

Я следовал инструкциям на этой ссылке

Я создал файл sh и поместил его в /usr/local/bin (Tourmaline.sh):

#!/bin/sh
SERVICE_NAME=Tourmaline
PATH_TO_JAR=/usr/local/bin/Tourmaline.jar
PID_PATH_NAME=/tmp/Tourmaline-pid
case $1 in
start)
    echo "Starting $SERVICE_NAME ..."
    if [ ! -f $PID_PATH_NAME ]; then
        exec 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

когда я запускаю "sudo Tourmaline.sh start" на терминале, программа начинает работать, и когда я отправляю запрос, я получаю ответ.

это была фаза 1. Затем я создал служебный скрипт и поместил его в /etc/systems/system (Tourmaline.service):

[Unit]
Description = Tourmaline
After= network.target

[Service]
Type = forking
ExecStart = /usr/local/bin/Tourmaline.sh start
ExecStop = /usr/local/bin/Tourmaline.sh stop
ExecReload = /usr/local/bin/Tourmaline.sh reload

[Install]
WantedBy=multi-user.target

Я включил службу, используя "sudo systemctl enable Tourmaline" и начните с "sudo systemctl start Tourmaline.service"

в статусе вижу, что сервис запущен и активен Однако, когда я отправляю запрос, я получаю "connection refused" ошибку я пытаюсь запустить "sudo Tourmaline.sh start" но он говорит

программа уже запущена (потому что служба запущена).

как я могу сделать так, чтобы служба принимала соединения?

...