Hudson 执行shell脚本(Hudson 启动Tomcat 无效问题)

在使用Hudson的执行sh脚本的时候,如果sh脚本是一个后台进程,如 Tomcat 这样的服务。如果使用Hudson的默认配置,会发现这些sh 进程有启动的过程,但是不会常驻后台,看Hudson 输出的日志,发现Hudson在Job构建结束之后,kill所有未终止的衍生进程。

在Hudson另一wiki页面上进一步描述了Hudson杀掉衍生进程的情况。Hudson在执行Job时会设置一系列环境变量,这些环境变量将被Job衍生出的进程继承。Hudson在kill衍生进程的时候会查看进程的环境变量,如果找到它之前设置的环境变量,则将其杀掉。Wiki上给出了一个简单的方法来避免进程被kill掉:修改Hudson设置的环境变量BUILD_ID的值,从而让Hudson认为此进程不是由Job的构建过程衍生的。


方法1:全局设置

打开:Hudson > 系统管理 > 系统设置

设置BUILD_ID 值为 allow_to_run_as_daemon

这样我们就可以在需要执行sh脚本的地方执行写入执行sh的命令即可,以启动和停止Tomcat为例,如下图:

方法2:在需要执行sh脚本的地方设置BUILD_ID

直接在Command里面先设置BUILD_ID,然后接着执行sh脚本,如下:

-------------------------------------

(完)

Huds

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-07-29 11:52:26

Hudson 执行shell脚本(Hudson 启动Tomcat 无效问题)的相关文章

centos7 开机自动执行shell脚本

centos7 开机自动执行shell脚本 90十80 关注 2018.12.23 09:37 字数 309 阅读 485评论 0喜欢 0 自己新建一个脚本,如centnet-service.sh 经过后面的几个步骤后,这个脚本在开机的时候会执行,在这个脚本里面可以写你开机的时候想执行的命令,如启动tomcat,oracle等服务 在脚本中输入启动服务的命令,如(开机启动tomcat): #!/bin/bash export JDK_HOME=/home/java/jdk1.8.0_91 exp

shell脚本中重启tomcat进程

shell脚本 #! /bin/bash SHUTDOWN="/root/tomcat/bin/shutdown.sh" STARTTOMCAT="/root/tomcat/bin/startup.sh" echo "关闭tomcat" $SHUTDOWN ps -ef |grep tomcat |grep /root/platform |grep -v 'grep'|awk '{print $2}' | xargs kill -9 sleep

Java执行shell脚本关闭远程数据库

本实例为用Java执行shell脚本启动或关闭远程Mysql数据库,需求原因:游戏服务器合服后,为了节省内存消耗,需要关闭合服后的服务器不必要的数据库(一台服务器主机存在多个MySql数据库),以提高服务器性能,但有时需要查询历史游戏玩家信息,又需要开启数据库,为了节省运维人员的人力和时间,游戏后台就提供非运维人员都可操作开关数据库的操作. 功能实现步骤: 第一:服务器后台提供参数,发送异步请求,请求方法如下 <script type="text/javascript">

php利用root权限执行shell脚本 (转)

转一篇博客,之前搞这个东西搞了好久,结果今天晚上看到了一篇救命博客,瞬间开心了...转载转载 利用sudo来赋予Apache的用户root的执行权限,下面记录一下: 利用PHP利用root权限执行shell脚本必须进行以下几个步骤:(所有步骤都是我亲自实验,若有不妥可指出,谢谢!) 1. 确定一下你的Apache的执行用户是谁.注:不一定就是nobody,我自行安装的httpd,我的Apache的用户就是daemon 2. 利用visudo为你的Apache执行用户赋予root执行权限,当然还有

Linux中执行shell脚本命令的4种方法总结

bash shell 脚本的方法有多种,现在作个小结.假设我们编写好的shell脚本的文件名为hello.sh,文件位置在/data/shell目录中并已有执行权限. 方法一:切换到shell脚本所在的目录(此时,称为工作目录)执行shell脚本: 复制代码 代码如下: cd /data/shell ./hello.sh ./的意思是说在当前的工作目录下执行hello.sh.如果不加上./,bash可能会响应找到不到hello.sh的错误信息.因为目前的工作目录(/data/shell)可能不在

Linux中执行shell脚本的4种方法总结

bash shell 脚本的方法有多种,现在作个小结.假设我们编写好的shell脚本的文件名为hello.sh,文件位置在/data/shell目录中并已有执行权限. 方法一:切换到shell脚本所在的目录(此时,称为工作目录)执行shell脚本: 复制代码 代码如下: cd /data/shell ./hello.sh ./的意思是说在当前的工作目录下执行hello.sh.如果不加上./,bash可能会响应找到不到hello.sh的错误信息.因为目前的工作目录(/data/shell)可能不在

Linux中执行shell脚本的4种方法

这篇文章主要介绍了Linux中执行shell脚本的4种方法总结,即在Linux中运行shell脚本的4种方法,需要的朋友可以参考下. bash shell 脚本的方法有多种,现在作个小结.假设我们编写好的shell脚本的文件名为hello.sh,文件位置在/root/bin目录中并已有执行权限(添加权限的方法:chmod +x hello.sh). 方法一:切换到shell脚本所在的目录(此时,称为工作目录)执行shell脚本: ./ 的意思是说在当前的工作目录下执行hello.sh.如果不加上

执行shell脚本的方式

执行shell脚本有以下3种方式: bash xxxxx.sh或者sh xxxxx.sh(推荐使用) path/xxxxx.sh或者./xxxxx.sh(当前路径下执行脚本) source xxxxx.sh或者. xxxxx.sh(点后面有个空格.此种方式可以把自身shell变量的值 传递给父shell使用). 第一种方式是当shell脚本没有可执行权限的时候用: 第二种方式,当chmod o+x xxxxx.sh或者chmod 755 xxxxx.sh赋予shell脚本可执行权限的 的时候,可

Linux中执行shell脚本

这篇文章主要介绍了Linux中执行shell脚本的4种方法总结,即在Linux中运行shell脚本的4种方法,需要的朋友可以参考下 bash shell 脚本的方法有多种,现在作个小结.假设我们编写好的shell脚本的文件名为hello.sh,文件位置在/data/shell目录中并已有执行权限.方法一:切换到shell脚本所在的目录(此时,称为工作目录)执行shell脚本:复制代码 代码如下: cd /data/shell./hello.sh ./的意思是说在当前的工作目录下执行hello.s