在raspbian中用作服务时,Tcpip连接被拒绝 [英] Tcpip connection refused when used as service in raspbian
问题描述
我有一个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屋!