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后,服务无法在后台持续运行的解决方案的更多相关文章

  1. jenkins 构建部署时tomcat7 内存溢出解决方案

    在使用jenkins构建部署时一直出现tomcat7内存溢出 WARNING: Unexpected node monitoring termination: Clock Difference jav ...

  2. nodejs服务后台持续运行三种方法

    一.利用 forever forever是一个nodejs守护进程,完全由命令行操控.forever会监控nodejs服务,并在服务挂掉后进行重启. 1.安装 forever npm install ...

  3. Swift - 让程序挂起后,能在后台继续运行任务

    1,程序的挂起和退出 由于iOS设备资源有限.当用户点击了home键,或者另一个应用程序启动了.那么原先那个程序便进入后台被挂起,不是退出,只是停止执行代码,同时它的内存被锁定.当应用程序恢复时,它会 ...

  4. 【iOS】swift 让程序挂起后,能在后台继续运行任务

    1,程序的挂起和退出 由于iOS设备资源有限.当用户点击了home键,或者另一个应用程序启动了.那么原先那个程序便进入后台被挂起,不是退出,只是停止执行代码,同时它的内存被锁定.当应用程序恢复时,它会 ...

  5. android保持服务不休眠(持续运行)以及唤醒屏幕的方法

    假设有这样一个应用场景,一个服务一直在默默的工作(比如即时地获取服务器的消息),即使在屏幕已经因为长时间无操作而关闭,或者用户按了电源键让屏幕关闭,手机进入休眠状态,他必须依然在工作中.一旦从服务器获 ...

  6. jenkins使用小技巧:jenkins构建出来的war/jar包如何带上SVN号?

    在实际使用过程中,一般会这样比如说打出来的包是 mypackage.jar, 但是每次打出来都是固定的 mypackage.jar如何来区分和上一个包的区别呢? 一般来说,会把打出来的包带上个 svn ...

  7. jenkins自动化部署jar包(2)

    1.自动化部署流程: svn代码-----jenkins------linux运行 环境: 我这里为了测试:svn,和linux放在阿里云上面.jenkins放在本地windos电脑上运行的 2.下载 ...

  8. Jenkins构建部署Maven项目

    1 创建新项目 2 构建maven项目 3 配置 3.1  源代码管理 svn 用户名,密码 4 配置maven打包 配置SSH 保存之后 立即构建 执行成功

  9. jenkins自动化部署项目6 --STMP服务发送邮件配置

    [系统管理]-[系统设置]里 1.系统管理员邮件地址:和后面SMTP配置认证的邮箱要一致,即发件箱   --------切记 2.配置SMTP认证的前提是需要在sohu搜狐邮箱开通SMTP/POP3, ...

随机推荐

  1. C++得到当前进程所占用的内存

    原文地址:C++得到当前进程所占用的内存作者:雪碧狗 使用SDK的PSAPI (Process Status Helper)中的BOOL GetProcessMemoryInfo(  HANDLE P ...

  2. [shell]流程控制----case语句

    Shell case语句为多选择语句.可以用case语句匹配一个值与一个模式,如果匹配成功,执行相匹配的命令.case语句格式如下: case 值 in 模式1) command1 command2 ...

  3. ztree的树形结构不能正常显示原因

    1.ztree树形结构不能正常显示情况如下: 2.原因之一:未给其类添加 ztree 原因二:未引用ztree的css样式 <link href="~/Content/CSS/zTre ...

  4. UWP-HttpClient

    原文:UWP-HttpClient 基本格式: HttpClient client = new HttpClient(); Uri uri = new Uri(url); HttpResponseMe ...

  5. 演练:创建和使用静态库 (C++)

    我们将创建的下一个库类型是静态库 (LIB). 使用静态库是重用代码的一种绝佳方式. 您不必在自己创建的每个程序中重新实现同一例程,而只需对这些例程编写一次,然后从需要该功能的应用程序引用它们即可. ...

  6. 使用Netty实现通用二进制协议的高效数据传输

    Netty是一个高性能的NIO通信框架,提供异步的.事件驱动的网络编程模型.使用Netty可以方便用户开发各种常用协议的网络程序.例如:TCP.UDP.HTTP等等. Netty的最新版本是3.2.7 ...

  7. Google C++测试框架系列入门篇:第二章 开始一个新项目

    上一篇:Google C++测试框架系列入门篇:第一章 介绍:为什么使用GTest? 原始链接:Setting up a New Test Project 词汇表 版本号:v_0.1 开始一个新项目 ...

  8. Codility--- Distinct

    Task description Write a function class Solution { public int solution(int[] A); } that, given a zer ...

  9. Codility------CyclicRotation

    Task description A zero-indexed array A consisting of N integers is given. Rotation of the array mea ...

  10. PHP调用语音合成接口

    百度TTS 语音合成 //百度文件转换成语音 private function toSpeech($text) { define('DEMO_CURL_VERBOSE', false); $obj=[ ...