Ну как в заголовке.У меня есть сетевое приложение Java, которое работает на Raspberry Pi 3. Когда я запускаю приложение из консоли, как java -jar myApp.java или sudo nohup java -jar myApp.java , а затем яоставьте это, он отлично работает в течение многих часов.
Затем я попытался запустить это приложение в качестве службы.После настройки wlan auto запустите скрипт systmd и все прочее.Приложение запускается правильно, но через несколько секунд теряет подключение к сети.Я могу добавить, что есть Wi-Fi соединение.Я бродил, в чем разница между запуском приложения вручную и в качестве службы, и я не нашел ничего конкретного.Есть что-то, о чем я должен знать?Насколько я не нашел решения.
Я устал от множества комбинаций системных скриптов, но моя проблема не решается ничем.И я также пытался запустить это приложение из другого на RasPberry, но оно работает так же, как и из этого сервиса.
Теперь я могу добавить это, когда я нажимаю с консоли systemctl stop myService , а затем systemctl start myService также работает нормально.
systemd script below:
[Unit]
Description = Java Service
After network.target = MyService.service
[Service]
Type = forking
ExecStart = /usr/local/bin/MyService.sh start
ExecStop = /usr/local/bin/MyService.sh stop
ExecReload = /usr/local/bin/MyService.sh reload
[Install]
WantedBy=multi-user.target
Bash script to run the service:
#!/bin/bash
SERVICE_NAME=app
PATH_TO_JAR=/home/user/app.jar
RE='^[0-9]+$'
APP_PID=\`ps -ef | grep -v grep | grep "app.jar" | awk '{print $2}'\`
case $1 in
start)
echo "Starting $SERVICE_NAME ..."
if ! [[ $APP_PID =~ $RE ]]; then
nohup java -jar $PATH_TO_JAR /tmp 2>> /dev/null &
APP_PID=`ps -ef | grep -v grep | grep "app.jar" | awk '{print $2}'`
echo "$SERVICE_NAME started ..."
else
echo "$SERVICE_NAME is already running ..."
fi
;;
stop)
if [[ $APP_PID =~ $RE ]]; then
echo "$SERVICE_NAME stoping ..." &
kill $APP_PID &
APP_PID="" &
echo "$SERVICE_NAME stopped ..."
else
echo "$SERVICE_NAME is not running ..."
fi
;;
restart)
if [[ $APP_PID =~ $RE ]]; then
echo "$SERVICE_NAME stopping ...";
kill $APP_PID;
echo "$SERVICE_NAME stopped ...";
echo "$SERVICE_NAME starting ..."
nohup java -jar $PATH_TO_JAR /tmp 2>> >> /dev/null &
echo "$SERVICE_NAME started ..."
else
echo "$SE`enter code here`RVICE_NAME is not running ..."
fi
;;
esac