Jenkins+基础系列15:番外篇--构建后操作无法启动jar、war包,并非Jenkins自动杀死衍生进程!

近段时间,公司项目采用java -jar 的方式直接启动项目,在调试Jenkins环境时,发现无论什么方式,都无法启动对应进程,查阅各种资料,说是因为Jenkins在构建完成后,为了不造成环境问题,会把衍生进程给自动杀死。于是查到有几种解决办法:

1、重设环境变量 BUILD_ID

BUILD_ID=dontKillMe

无效

2、sh脚本中

export BUILD_ID=dontKillMe

无效

3、临时改变 BUILD_ID值


OLD_BUILD_ID=$BUILD_ID
echo $OLD_BUILD_ID
BUILD_ID=dontKillMe
sh /home/cloud/exec/test.sh
#改回原来的BUILD_ID值
BUILD_ID=$OLD_BUILD_ID
echo $BUILD_ID

无效

4、通过Jenkins的启动参数禁用杀死衍生进程的特性

tomcat部署时修改 catalina.sh  脚本上加上上JAVA_OPTS="$JAVA_OPTS -Dhudson.util.ProcessTree.disable=true";重启tomcat

无效

没错这上面的都通通无效

请教大佬后得知,这根本不是自动杀死衍生进程的问题

而是环境变量的问题

没想到吧

先说解决办法:

在构建后操作,脚本最前面加上

source /etc/profile

如同这样

原理:

通过SSH执行命令的两种形式

1、通过ssh登录后执行

两个重要的概念:interactive和login

在interactive + login shell模式中,Shell首先会加载/etc/profile文件

2、通过ssh直接执行

两个重要的概念:non-interactive + non-login

不会去执行/etc/profile文件,而会去用户的HOME目录检查.bashrc并加载

原理转载:https://www.cnblogs.com/zhenyuyaodidiao/p/9287497.html

猜你喜欢

转载自blog.csdn.net/yangj507/article/details/107480770