jenkins中通过execute shell启动的进程会被杀死的问题

在jenkins中配置自动更新部署项目时,如果采取用execute shell启动/关闭tomcat,会发现可以进行关闭tomcat,

但是无法启动tomcat,虽然构建会显示执行成功,但是查看进程,tomcat是没有启动的。这是因为Jenkins默认

会在Build结束后Kill掉所有的衍生进程。需要进行以下配置,才能避免此类情况发生:

1.重设环境变量build_id

在execute shell输入框中加入BUILD_ID=DONTKILLME,即可防止jenkins杀死启动的tomcat进程

2.在启动jenkins 的时候禁止jenkins杀死衍生进程

修改/etc/sysconfig/jenkins配置,在JENKINS_JAVA_OPTIONS中加入-Dhudson.util.ProcessTree.disable=true。

需要重启jenkins生效

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

<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">

时间: 2024-10-31 07:48:24

jenkins中通过execute shell启动的进程会被杀死的问题的相关文章

shell脚本获取进程ID并杀死的实现及问题解析

经常需要杀死某个进程,操作了几次之后,对一个熟练的码农来说,就要制作自己的工具了.有些工具虽然很小,但是却能节省一大部分的时间. 输入某个进程的ID并杀死的方法.这种事情,一般是先搜索再进行优化,这种对我这种不是大牛的人来说,是最快的方法: 果然不出所料,很快我就找到一个能用的脚本: #!/bin/bash echo "Input process name first" read input1 PID=$(ps -e|grep $input1|awk '{printf $1}') if

在jenkins中调用maven的变量

Maven内置变量说明: ${basedir} 项目根目录(即pom.xml文件所在目录) ${project.build.directory} 构建目录,缺省为target目录 ${project.build.outputDirectory} 构建过程输出目录,缺省为target/classes ${project.build.finalName} 产出物名称,缺省为${project.artifactId}-${project.version} ${project.packaging} 打包

在linux中安装jdk以及tomcat并shell脚本关闭启动的进程

在命令行模式中输入uname -a ,如下图,当界面展示i386就说明本linux系统为32版本,就在官网下载对应jdk版本,或者直接到我的网盘上下载http://pan.baidu.com/s/1cqMNd8 将下载好的tar包通过rz命令上传到服务器路径/usr/local下并通过命令解压:tar -xf jdk-7u67-linux-i586.tar.gz 编辑系统隐藏文件profile文件并添加jdk的path,命令:vi /etc/profile,在打开的界面通过i命令在该闻文本的结尾

Jenkins启动守护进程后台持续运行

在使用jenkins的时候,我们可能有这样的需求,希望jenkins启动的进程在后台持续运行,不阻塞jenkins的构建.1.136版本之前的jenkins不满足这种需求,1.136之后的版本支持. 为什么jenkins的进程是阻塞的? jenkins主进程和它所启动的子进程通过stdin.stdout.stderr这三个管道相互联系.也因为这样,jenkins可以打印所有进程的日志.子进程可能打印海量的日志,然后结束,但是jenkins主进程要保证所有的子进程通道关闭后,才能认为本次build

【转载】用shell脚本监控进程是否存在 不存在则启动的实例

用shell脚本监控进程是否存在 不存在则启动的实例,先上代码干货: #!/bin/shps -fe|grep processString |grep -v grepif [ $? -ne 0 ]thenecho "start process....."elseecho "runing....."fi#####processString 表示进程特征字符串,能够查询到唯一进程的特征字符串0表示存在的$? -ne 0 不存在,$? -eq 0 存在 ---------

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

用过Jenkins的都知道,在Build配置那里有一个Add buld step, 有这样两个选项: 1. Execute Windows batch command 2. Execute shell 第1个是执行windows命令,第2个是执行shell脚本. 一开始我以为不管jenkins安装在windows下还是linux下都可以执行windows命令和linux命令,但是后来我发现在windows中,是可以执行第1个的,但是用第2个选项执行shell会失败,会报错说不能执行sh. 我想第

用shell脚本监控进程是否存在 不存在则启动的实例附带if判断详细条件

#!/bin/shps -fe|grep processString |grep -v grepif [ $? -ne 0 ]thenecho "start process....."elseecho "runing....."fi#####processString 表示进程特征字符串,能够查询到唯一进程的特征字符串0表示存在的$? -ne 0 不存在,$? -eq 0 存在 --------------------------------------------

shell脚本监控进程是否存在,不存在则启动实例

用shell脚本监控进程是否存在 不存在则启动的实例,先上代码干货: #!/bin/sh ps -fe|grep processString |grep -v grep if [ $? -ne 0 ] then echo "start process....." else echo "runing....." fi processString 表示进程特征字符串,能够查询到唯一进程的特征字符串 0表示存在的 $? -ne 0 不存在,$? -eq 0 存在 定时执行

ruby中执行shell命令找到进程并kill掉

shell命令获得进程id的方法有三种: 1. ps -A |grep cmdname| awk '{print $1}' 2. pidof cmdname 3. pgrep cmdname ruby中怎么做呢? ruby中有三种方式执行shell命令: %x: 执行命令并返回执行结果 exec:执行命令并退出. system:执行命令并返回true或false. 所以这里要使用%x来取得返回结果. 比如要killsublime: result = %x[pgrep sublime] %x[su