Jenkins构建部署jar/war后,服务无法在后台持续运行的解决方案
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

【一位十年码农的碎碎念,扫码关注获取更多精彩内容】
原创文章,转载请注明出处,更多文章请关注公众号。
Jenkins构建部署jar/war后,服务无法在后台持续运行的解决方案的更多相关文章
- jenkins 构建部署时tomcat7 内存溢出解决方案
在使用jenkins构建部署时一直出现tomcat7内存溢出 WARNING: Unexpected node monitoring termination: Clock Difference jav ...
- nodejs服务后台持续运行三种方法
一.利用 forever forever是一个nodejs守护进程,完全由命令行操控.forever会监控nodejs服务,并在服务挂掉后进行重启. 1.安装 forever npm install ...
- Swift - 让程序挂起后,能在后台继续运行任务
1,程序的挂起和退出 由于iOS设备资源有限.当用户点击了home键,或者另一个应用程序启动了.那么原先那个程序便进入后台被挂起,不是退出,只是停止执行代码,同时它的内存被锁定.当应用程序恢复时,它会 ...
- 【iOS】swift 让程序挂起后,能在后台继续运行任务
1,程序的挂起和退出 由于iOS设备资源有限.当用户点击了home键,或者另一个应用程序启动了.那么原先那个程序便进入后台被挂起,不是退出,只是停止执行代码,同时它的内存被锁定.当应用程序恢复时,它会 ...
- android保持服务不休眠(持续运行)以及唤醒屏幕的方法
假设有这样一个应用场景,一个服务一直在默默的工作(比如即时地获取服务器的消息),即使在屏幕已经因为长时间无操作而关闭,或者用户按了电源键让屏幕关闭,手机进入休眠状态,他必须依然在工作中.一旦从服务器获 ...
- jenkins使用小技巧:jenkins构建出来的war/jar包如何带上SVN号?
在实际使用过程中,一般会这样比如说打出来的包是 mypackage.jar, 但是每次打出来都是固定的 mypackage.jar如何来区分和上一个包的区别呢? 一般来说,会把打出来的包带上个 svn ...
- jenkins自动化部署jar包(2)
1.自动化部署流程: svn代码-----jenkins------linux运行 环境: 我这里为了测试:svn,和linux放在阿里云上面.jenkins放在本地windos电脑上运行的 2.下载 ...
- Jenkins构建部署Maven项目
1 创建新项目 2 构建maven项目 3 配置 3.1 源代码管理 svn 用户名,密码 4 配置maven打包 配置SSH 保存之后 立即构建 执行成功
- jenkins自动化部署项目6 --STMP服务发送邮件配置
[系统管理]-[系统设置]里 1.系统管理员邮件地址:和后面SMTP配置认证的邮箱要一致,即发件箱 --------切记 2.配置SMTP认证的前提是需要在sohu搜狐邮箱开通SMTP/POP3, ...
随机推荐
- C#图片保存与读取,以及图片另存
照片的保存与读取 /// <summary> /// 图片转二进制 /// </summary> /// <param name="imgPhoto" ...
- 数据可视化图表ECharts
介绍: ECharts是一个基于ZRender(轻量级Canvas类库)的纯javascript图表库,提供可交互.个性化的数据可视化图表. ECharts提供了折线图.柱状图.散点图.饼图.K线图, ...
- CSS计数器:counter
最近的需求,明星字体销售排行榜中,需要对字体的销售情况进行排序. 在早期,只有ol和ul可以对子元素li进行排序:如果不使用这两个标签,就由前台开发去手动填写序号. 当然,在这个需求中,数据不是实时更 ...
- ReportViewer,RDLC 报表开发之个性化样式
原文:ReportViewer,RDLC 报表开发之个性化样式 报表开发中,客户对样式提出了要求: 1.工具栏上显示每页条数 2.只导出Excel,不需要下拉菜单. 3.报表上显示的图表,分页时,每页 ...
- Window上安装kafka
kafka在windows上的安装.运行 - 进阶者ryan-su - CSDN博客 https://blog.csdn.net/u010283894/article/details/77106159 ...
- EasyUI之combogrid
html代码: <div class="item-label">@Html.L("Name"):</div> <input id= ...
- uwp之拍照(使用后置摄像头)
参考:wp8.1之拍照(获取焦点,使用后置摄像头) uwp开启摄像头要借助CaptureElement呈现来自捕获设备(如照相机或网络摄像机)的流.今天讲讲如何打开摄像头,获取焦点,以及拍照.废话不多 ...
- LINQ学习笔记(三)
下面对各子句解释 from子句:查询表达式的开始子句,查询表达式必须以from子句开头. 格式:from u in source 其中u表示范围变量,它表示源序列中的每个后续元素,source为数据源 ...
- ML:多变量线性回归(Linear Regression with Multiple Variables)
引入额外标记 xj(i) 第i个训练样本的第j个特征 x(i) 第i个训练样本对应的列向量(column vector) m 训练样本的数量 n 样本特征的数量 假设函数(hypothesis fun ...
- Tomcat请求过程
Tomcat请求过程 1.用户点击网页内容,请求被发送到本机端口8080,被在那里监听的Coyote HTTP/1.1 Connector获得. 2.Connector把该请求交给它所在的Servic ...