远程(jenkins)调用shell 不能正常结束

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了远程(jenkins)调用shell 不能正常结束相关的知识,希望对你有一定的参考价值。

参考技术A Linux正常后台启动可以使用nohup加&符号。

例如:nohup java -jar start.jar >log.log 2>&1 &。

但是在jenkins远程调用,会把日志打印在jenkins控制台中,导致任务不能结束。

通过排查,在程序运行前使用了cd命令,先cd到目录,在运行命令

cd /service && nohup java -jar start.jar >log.log 2>&1 &

改为绝对路径,去掉cd命令,程序正常了

脚本如下:

#!/bin/bash

set -x

kill -9 `ps -ef |grep start|grep -v grep|awk -F " " 'print$2'`

source /etc/profile

nohup java -jar /service/start.jar  -Xms500m -Xmx500m -Xmn250m -Xss256k -server -XX:+HeapDumpOnOutOfMemoryError > /service/Log.log  2>&1 &

echo "starting service..."

sleep 10

#根据重启后是否有当前应用判断启动是否成功

pid=$(ps -ef |grep start|grep -v grep|awk -F " " 'print$2')

#echo $pid

if [ -z $pid ];then

  echo "启动失败"

  exit 1

else

  echo  $pid  "SUCCESS"

fi

以上是关于远程(jenkins)调用shell 不能正常结束的主要内容,如果未能解决你的问题,请参考以下文章

jenkins 构建时不能自动结束的问题

jenkins自动部署tomcat

一个jenkins远程操作另一个jenkins进行构建

shell调用mapreduce结束后无法获取结束状态

在Jenkins中配置执行远程shell命令

jenkins远程执行shell