jenkins 解决服务器远程启动jar方法无响应的方法

  最近在部署jenkins远程发布,发现jenkins在A服务器上,如果链接B服务器并调用B服务器的脚本,启动springboot的jar,会没有响应,先开始的思路是ssh远程连接后启动B服务器脚本,发现没有任何反应,但jenkins内成功,就是jar起不起来,具体脚本内容如下:


#!/bin/bash
cd /home/data
echo "Stopping sso"
pid=`ps -ef | grep sso.jar | grep -v grep | awk '{print $2}'`
if [ -n "$pid" ]
then
   echo "kill -9 pid:" $pid
   kill -9 $pid
fi
echo "Execute shell Finish"
BUILD_ID=dontKillMe java -Duser.timezone=GMT+8 -Dspring.profiles.active=test -jar /home/data/sso.jar --httpPort=8886 >/dev/null 2>&1 &




网上讨论点五花八门,如:

1.在调用的地方用BUILD_ID=dontKillMe;

2.接着又有人说用daemonize守护线程,还有人说改变BUILD_ID值;

3.也有人说在脚本开始前加上JAVA_OPTS="$JAVA_OPTS -Dhudson.util.ProcessTree.disable=true";

更有甚者还干脆来了个合集,一个方法都用不了,简直崩溃(网上的大神都是复制粘贴高手,拜服),最后在一篇帖子内看到:

source /etc/profile
 
然后在命令执行的位置添加下面这行命令:
BUILD_ID=dontKillMe

nohup java -jar app.jar > nohup.out & 2>&1 &

注意:source /etc/profile 如果没有,没有错误也不会有java执行的进程

增加 source /etc/profile 后不能直接使用nohup java -jar app.jar & 这时候Jenkins会打印app启动信息

没错,就是他,在脚本最前面加上source /etc/profile,完美一切运行正常!!!!!!!!

原来在一台服务器远程链接另一台服务器的时候,即便是存在BUILD_ID=dontKillMe,必须使用source /etc/profile,使其在B终端内有效,不然默认还是A终端,导致无法正常启动。

  • 9
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值