zoukankan      html  css  js  c++  java
  • jenkins默认在build结束后会kill掉所有的衍生进程

    在使用jenkins进行自动化部署服务的过程中,发现调用服务器的shell命令无法正常启动tomcat,但是构建日志显示是成功执行的,而手动在服务器却是可以正常启动tomcat。

    原因:jenkins默认在build结束后会kill掉所有的衍生进程

    Jenkins提供了hudson.util.ProcessTree.disable和hudson.util.ProcessTreeKiller.disable两个属性来控制些特性,值为true将禁用此特性。hudson.util.ProcessTree.disable从Jenkins 1.260开始使用,而使用1.315之前的Hudson时只能使用hudson.util.ProcessTreeKiller.disable,为了版本兼容,在Jenkins 1.260后这两个属性都可能使用,建议使用1.260之的Jenkins用户使用hudson.util.ProcessTree.disable属性。

    解决方案:

    1. 针对每个item:在execute shell输入框中加入BUILD_ID=DONTKILLME,即可防止jenkins杀死启动的tomcat进程

    2.永久方案:启动jenkins 的时候禁止jenkins杀死衍生进程

    ● 使用java -jar启动,-Dhudson.util.ProcessTree.disable=true -jar jenkins.war
    ● 使用Tomcat启动,Linux系统修改catalina.sh,在环境变量的说明后,脚本开始前加上这句话
    JAVA_OPTS="$JAVA_OPTS -Dhudson.util.ProcessTree.disable=true";

    修改好Tomcat的配置文件后重新启动Tomcat

    3. 在启动jenkins 的时候禁止jenkins杀死衍生进程(此方法未测试,也是解决办法之一)

        修改/etc/sysconfig/jenkins配置,在JENKINS_JAVA_OPTIONS中加入-Dhudson.util.ProcessTree.disable=true。需要重启jenkins生效

        此方法配置一次后,所有的job都无需设置BUILD_ID,就能够防止jenkins杀死启动的java进程

     




  • 相关阅读:
    从Unity3D编译器升级聊起Mono
    RxJava系列6(从微观角度解读RxJava源码)
    RxJava系列5(组合操作符)
    RxJava系列4(过滤操作符)
    RxJava系列3(转换操作符)
    RxJava系列2(基本概念及使用介绍)
    RxJava系列1(简介)
    给 Android 开发者的 RxJava 详解
    深入浅出RxJava就这一篇就够了
    android非法字符的判定、表情符号的判定
  • 原文地址:https://www.cnblogs.com/qianjinyan/p/11239984.html
Copyright © 2011-2022 走看看