Jenkins是在win10用jar -jar方式启动的
在服务器直接运行jar包或者运行shell脚本没问题,可以跑起来,也能访问。用jenkins部署就不行,不管任何办法都不能跑起来
各项部署都没问题,项目也打包发送到了服务器,但是项目就是启动不成功。
网上的说法是Jenkins在build以后默认把子进程给杀死了,所以在执行了shell启动项目脚本之前加入
export BUILD_ID=dontkillme 这一行,必须加。如果是tomcat跑的Jenkins,就要修改tomcat里面cataline.sh的配置
当我加了 BUILD_ID=dontKillMe这个还是不行。我是java -jar运行的jenkins。还试了其他很多办法,都不行。
各种办法都试了,还是不行,先留着,后期研究
忙完了其他事情,这个问题继续来,一直困扰,虽然工作中没有遇到,在自己服务器机器上面遇到了,不解决心里面不舒服
按照网上的解决方式:
先是看了Jenkin官方的解释,也就是以下几种方式
1、脚本加上export BUILD_ID=dontkillme 无效
2、启动Jenkins的时候加上-Dhudson.util.ProcessTree.disable=true参数 无效
3、把jenkins放在tomcat里面跑,修改tomcat的cataline.sh文件的参数 脚本开始前加上JAVA_OPTS="$JAVA_OPTS -Dhudson.util.ProcessTree.disable=true";Windows系统修改catalina.bat,在环境变量的说明后,脚本开始前加上set JAVA_OPTS=%JAVA_OPTS% "-Dhudson.util.ProcessTree.disable=true"; 无效
4、安装daemonize防止被进程被杀,脚本最后一行执行命令 daemonize -E BUILD_ID=dontKillMe nohup java -jar /usr/local/miniprogram/miniprogram.jar & 无效
5、按照官方进行配置BUILD_ID,启动-Dhudson.util.ProcessTree.disable=true参数等 无效
到此为止,本人已经崩溃,生活已不能自理,网上的解决都是这里拷贝那里,全是复制大神们
问了群里面一个曾经在阿里工作的大神,让我在shell脚本最上方加上source /etc/profile,感觉又有了一线生机。
然后试了一下,居然可以了,详情看下图
当看到SpringBoot启动的时候,我就知道基本上已经成事了。问题解决
最终的miniprogram.sh:
source /etc/profile
#!/bin/bash
echo "Restarting SpringBoot miniprogram Application"
pid=`ps -ef | grep miniprogram.jar | grep -v grep | awk '{print $2}'`
if [ -n "$pid" ]
then
kill -9 $pid
echo "closed process"$pid
fi
echo "grant auth to miniprogram.jar"
chmod 777 /usr/local/miniprogram/miniprogram.jar
echo "execute startup commands"
#java -jar /usr/local/miniprogram/miniprogram.jar
nohup java -jar /usr/local/miniprogram/miniprogram.jar &
原来在一台服务器远程链接另一台服务器的时候,即便是存在BUILD_ID=dontKillMe,必须使用source /etc/profile,使其在B终端内有效,不然默认还是A终端,导致无法正常启动。我也没有加什么BUILD_ID=dontKillme