Jenkins构建部署后,服务无法在后台持续运行的解决方案

0?wx_fmt=jpeg        上篇《利用jenkins实现自动构建、部署,提升团队开发效率》 ,任务运行很不稳定,时好时坏,只能再再深入一下,结果又发现jenkins的被忽略的特性。

         jenkins中自动构建helpcenter.jar文件,然后以在server上以shell脚本的形式启动jar服务。jenkins构建后,手动执行sh脚本,服务启动正常。但jenkins结合shell一起使用的话,jenkins的console中显示正常启动,但server中服务并未启动。什么原因呢?

        排错的过程总是异常的艰辛,你懂的。

shell脚本如下:

#!/bin/sh  

#defined   

export JAVA_HOME=/usr/java/jdk1.7.0_79

MID=`ps -ef |grep java |grep helpcenter |awk '{print $2}'`  

echo $MID   

echo "kill helpcenter process"  

if ["$MID" = ""]

then 

echo "no helpcenter running"

else

echo "helpcenter running "

kill -9 $MID  

fi

echo "copy the lasteset msgcenter jar file"

cp -rf /root/.jenkins/workspace/helpcenter/helpcenter/target/helpcenter.jar /home/tomcat/msgcenter

echo "start msgcenter jar file"  

#get int to jar location

cd /home/tomcat/msgcenter

nohup java -Xms512m -Xmx1024m -jar helpcenter.jar &

echo "stared helpcenter jar file"

细看job console最下面一行信息显示:

Process leaked file descriptors. See http://wiki.jenkins-ci.org/display/JENKINS/Spawning+processes+from+build for more information

大概意思是jenkins的job有构建结束后,会认为所有任务正常结束,但shell脚本会启动一个进程,job会认为其未结束,而将其kill掉,导致的现象就是刚启动的进程又被kill掉了。

网上翻阅了大量资料,有文章提出可通过daemonize工具,将程序作为实现良好的daemon进程运行以避免这个问题。在linux Server中安装daemonize工具,安装过程如下:

$ git clone http://github.com/bmc/daemonize.git

$ ./configure

$ make

$ make install

安装结束。

在jenkins中的shell配置的地方,添加最后一行命令行即可。


#!/bin/bash 

cd /home/autoshell/

echo "------------------------------------>>>begin sh helpcenter-restart.sh"

sh msgcener-restart.sh 

echo "------------------------------------>>>good ,start the helpcenter ........"

#关键命令

daemonize -E BUILD_ID=dontKillcenter /home/autoshell/helpcenter-restart.sh

重新启动jenkins job,测试是否正常使用。

参考资料:

http://software.clapper.org/daemonize/

http://alanland.iteye.com/blog/2047244

http://www.cnblogs.com/qcly/p/3219508.html

https://my.oschina.net/u/147181/blog/312599

传送门:

1、如何编写无须人工干预的shell脚本

2、利用jenkins实现自动构建、部署,提升团队开发效率

歪脖贰点零 ∣一个十年码农的日常碎碎念

640?wx_fmt=jpeg

640?wx_fmt=png

长按,识别二维码,加关注,获取更多精彩内容

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MavenTalk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值