在raspbian中用作服务时,Tcpip连接被拒绝 [英] Tcpip connection refused when used as service in raspbian

查看:49
本文介绍了在raspbian中用作服务时,Tcpip连接被拒绝的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个jar文件,可以监听tcpip请求并相应地发送数据。这个jar文件需要在raspbian服务上运行。



我已按照此链接上的说明



我创建sh文件并将其放在/ usr / local / bin(Tourmaline.sh)中:



#!/ bin / sh

SERVICE_NAME =电气石

PATH_TO_JAR = / usr / local / bin / Tourmaline.jar

PID_PATH_NAME = / tmp / Tourmaline-pid

case $ 1 in

start)

echoStarting $ SERVICE_NAME ...

if [! -f $ PID_PATH_NAME];然后

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

echo $! > $ PID_PATH_NAME

echo$ SERVICE_NAME已启动...

其他

echo$ SERVICE_NAME已在运行...

fi

;;

stop)

if [-f $ PID_PATH_NAME];然后

PID = $(cat $ PID_PATH_NAME);

echo$ SERVICE_NAME停止...

kill $ PID;

echo$ SERVICE_NAME停止......

rm $ PID_PATH_NAME

else

echo$ SERVICE_NAME未运行。 ..

fi

;;

重启)

if [-f $ PID_PATH_NAME];然后

PID = $(cat $ PID_PATH_NAME);

echo$ SERVICE_NAME停止...;

kill $ PID;

echo$ SERVICE_NAME停止......;

rm $ PID_PATH_NAME

echo$ SERVICE_NAME开始......

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

echo $! > $ PID_PATH_NAME

echo$ SERVICE_NAME启动...

其他

echo$ SERVICE_NAME未运行...

fi

;;

esac



当我运行sudo Tourmaline.sh start时在终端上,程序开始工作,当我发送请求时,我得到了回复。



这是第1阶段。接下来,我创建了服务脚本并将其放在/ etc / systems / system(Tourmaline.service)中:



[单位]

描述=电气石

之后= network.target



[服务]

类型=分叉

ExecStart = /usr/local/bin/Tourmaline.sh start

ExecStop = /usr/local/bin/Tourmaline.sh stop

ExecReload = / usr / local / bin /Tourmaline.sh重新加载



[安装]

WantedBy = multi-user.target

我是使用sudo systemctl enable Tourmaline启用服务,并使用sudo systemctl启动它启动Tourmaline.service



状态我可以看到服务启动并激活但是,当我发送请求时我得到连接被拒绝错误我尝试运行sudo Tourmaline.sh start,但它说



程序已经运行(因为服务已启动)。

< br $>




如何让服务接受连接?



我尝试过:



i使用netstat -l查看二手港口:

当我使用Tourmaline.service时没有tcp正在听取

当我使用Tourmaline.sh我得到tcp6 0 0 [::]:rtcm-sc104 [::]:* LISTEN

I have a jar file that listen to tcpip requests and send data accordingly. this jar file needs to run on a service in raspbian.

i've followed the instructions on this link

I've create sh file and put it in /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

when i run "sudo Tourmaline.sh start" on the terminal, the program starts to work and when i send a request i'm getting a response.

this was phase 1. next, i've created a service script and put it in /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
I've enable the service using "sudo systemctl enable Tourmaline" and start it with "sudo systemctl start Tourmaline.service"

in the status i can see that the service started and active However, when i send a request i'n getting "connection refused" error i try to run "sudo Tourmaline.sh start" but it says

the program is already running (because the service started).



how can i make the service accepts connections?

What I have tried:

i used netstat -l to see used ports:
when i use Tourmaline.service no tcp is listenning
when i use Tourmaline.sh i'm getting tcp6 0 0 [::]:rtcm-sc104 [::]:* LISTEN

推荐答案

1 in

start)

echo开始
1 in
start)
echo "Starting


SERVICE_NAME ...

如果[! -f
SERVICE_NAME ..."
if [ ! -f


PID_PATH_NAME];然后

exec java -jar
PID_PATH_NAME ]; then
exec java -jar


这篇关于在raspbian中用作服务时,Tcpip连接被拒绝的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆