问题遇到的现象和发生背景
我这边使用jenjins实现springboot项目的自动打包,远程部署功能
具体流程是:
1:代码修改后,提交到gitee仓库后,触发jenkins自动构建生成新的jar包
2:jenkins将jar发送到远程服务器
3:通过脚本启动项目
目前1,2两个步骤都执行成功,但是3项目启动时无法成功
问题相关代码,请勿粘贴截图
下面我是jenkins中的配置
启动脚本如下:
#!/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 "服务运行成功"
运行结果及报错内容
远程服务器上的脚本已经执行了,但是项目实际并未启动
我的解答思路和尝试过的方法
后面我在启动脚本上加上了这段之后,项目就神奇的可以启动成功了,但具体什么原因还不清楚
#!/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中日志
启动日志中打印了nohup的相关日志
我想要达到的结果
经过上面的修改也实现了项目启动,但是是什么原因造成的不能启动,以及加上“PID=ps -ef | grep "$JAR_NAME" | grep -v grep | awk '{print $2}'
”就可以启动的原因也不清楚,有没有懂的,求赐教