jenkins部署远程springboot项目时,无法启动

问题遇到的现象和发生背景

我这边使用jenjins实现springboot项目的自动打包,远程部署功能
具体流程是:
1:代码修改后,提交到gitee仓库后,触发jenkins自动构建生成新的jar包
2:jenkins将jar发送到远程服务器
3:通过脚本启动项目
目前1,2两个步骤都执行成功,但是3项目启动时无法成功

问题相关代码,请勿粘贴截图

下面我是jenkins中的配置

img

启动脚本如下:
#!/bin/bash
source /etc/profile
#jar所在目录
JAR_PATH=/usr/local/app/javademo
#jar名称
JAR_NAME=xn-demo-0.0.1-SNAPSHOT

#结束进程
echo "查询进程id-->$JAR_NAME"
PID=ps -ef | grep "$JAR_NAME" | grep -v grep | awk '{print $2}'
echo "得到进程ID:$PID"
for id in $PID
do
kill -9 $id
done
echo "结束进程完成"

echo "服务启动开始"
#运行jar

cd $JAR_PATH
chmod 777 $JAR_NAME.jar
nohup java -jar $JAR_PATH/$JAR_NAME.jar &

echo "服务运行成功"

运行结果及报错内容

img


远程服务器上的脚本已经执行了,但是项目实际并未启动

我的解答思路和尝试过的方法

后面我在启动脚本上加上了这段之后,项目就神奇的可以启动成功了,但具体什么原因还不清楚
#!/bin/bash
source /etc/profile
#jar所在目录
JAR_PATH=/usr/local/app/javademo
#jar名称
JAR_NAME=xn-demo-0.0.1-SNAPSHOT

#结束进程
echo "查询进程id-->$JAR_NAME"
PID=ps -ef | grep "$JAR_NAME" | grep -v grep | awk '{print $2}'
echo "得到进程ID:$PID"
for id in $PID
do
kill -9 $id
done
echo "结束进程完成"

echo "服务启动开始"
#运行jar

cd $JAR_PATH
chmod 777 $JAR_NAME.jar
nohup java -jar $JAR_PATH/$JAR_NAME.jar &

PID=ps -ef | grep "$JAR_NAME" | grep -v grep | awk '{print $2}' #此行很重要,不加服务无法启动,原因未知
echo "得到进程ID:$PID"

echo "服务运行成功"

jenkins中日志

img


启动日志中打印了nohup的相关日志

我想要达到的结果

经过上面的修改也实现了项目启动,但是是什么原因造成的不能启动,以及加上“PID=ps -ef | grep "$JAR_NAME" | grep -v grep | awk '{print $2}'”就可以启动的原因也不清楚,有没有懂的,求赐教

因为端口占用了。你重启一下服务器,你会发现你第一次部署绝对成功的。这个其实是要查询出来已经运行的java程序,干掉他。重新运行的意思

我发现,你上线个脚本,运行到大部分,最后那里就没运行了。

img

你确定你的方式没写错吗。。。


其实,写一个关于服务的启动脚本,用脚本来控制不更好吗?
我以前是用 sysemctl 来控制的。