Jenkins构建完成之后运行脚本可以杀掉TomCat但是起不来的解决方法
Jenkins构建完成之后运行脚本可以杀掉TomCat但是起不来的解决方法
写了一个重启tomcat的脚本,让jenkins编译、打包、发布时调用。在本地写好重启tomcat的脚本后,本地执行脚本没有问题,但在远程服务器上SSH免密登录执行后。发现可以把TOMCAT杀死,但tomcat却起不来。试了很多次发现都是只能够杀掉Tomcat但是启动不起来。
百度了一下,有人说脚本远程运行的话,远程会话结束以后会把这个子进程干掉。也就是说当Jenkins远程执行完这个脚本之后,这个脚本所衍生的所有子进程都会被杀掉。
重启Tomcat的脚本:
#重启tomcat服务器
pid=`lsof -i:8080|awk 'NR==2{print $2}'`
kill -9 $pid
sh /home/tomcat/bin/startup.sh &
为了证实这一说法,修改了脚本:
#重启tomcat服务器
pid=`lsof -i:8080|awk 'NR==2{print $2}'`
kill -9 $pid
cd /home/tomcat/bin/
sh ./startup.sh
sleep 60
Jenkins再次构建并执行该脚本,发现TomCat启来了,有日志了,也看到端口了,60秒后端口就自动消失了,同时这个不会写到日志里。说明上面关于远程执行的脚本会话结束以后会把这个子进程干掉的说法是成立的。
解决办法
在脚本的启动命令前加上nohup ,即如下
nohup sh /home/tomcat/bin/startup.sh &
或者:
在使用jenkins的时候shell脚本里边加上这一行就行了:BUILD_ID=DONTKILLME
在jenkins中配置自动更新部署项目时,如果采取用execute shell启动/关闭tomcat,会发现可以进行关闭tomcat,但是无法启动tomcat,虽然构建会显示执行成功,但是查看进程,tomcat是没有启动的。这是因为Jenkins默认会在Build结束后Kill掉所有的衍生进程。需要进行以下配置,才能避免此类情况发生:重设环境变量build_id,在execute shell输入框中加入BUILD_ID=DONTKILLME,即可防止jenkins杀死启动的tomcat进程。
BUILD_ID=DONTKILLME
#重启tomcat服务器
pid=`lsof -i:8080|awk 'NR==2{print $2}'`
kill -9 $pid
sh /home/tomcat/bin/startup.sh &
参考链接:
SSH远程启动tomcat后,退出SSH,tomcat也退出
jenkins中通过execute shell启动的进程会被杀死的问题
Jenkins构建完成之后运行脚本可以杀掉TomCat但是起不来的解决方法的更多相关文章
- 【转载】 jmeter 命令行模式(非GUI)运行脚本,察看结果树结果为空,解决办法
转载地址:https://www.cnblogs.com/canglongdao/p/12636403.html jmeter 命令行模式(非GUI)运行脚本,察看结果树结果为空,解决办法: jmet ...
- Android Studio Eclipse运行时出现 finished with non-zero exit value 2 错误解决方法
作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985 QQ986945193 微博:http://weibo.com/mcxiaobing Error:Ex ...
- 网页中"IE限制网页访问脚本或ActiveX控件"的提示问题的解决方法
以前从来没有注意过"IE限制网页访问脚本或ActiveX控件"的提示问题,对于这个小细节问题,虽然感觉很别扭,但一直没考虑解决方法,今天才发现该问题可以轻松解决,以下做个小小记录. ...
- Idea导出jar包运行报错:找不到主清单属性解决方法
解决方法 1.打开项目结构 2.创建一个Artifact 3.设置 我这里使用的maven,所以有resources文件夹 4.创建lib文件夹 右键output diretory,选择创建文件夹,名 ...
- jenkins 连接服务器并运行脚本
1.登录,在系统管理——节点管理——新增节点——配置从节点,添加远程工作目录,选择启动方式:通过JAVA WEB启动代理,添加JDK 2.在列表点节点,点launch下载插件,放到D:\JENKINS ...
- jmeter 命令行模式(非GUI)运行脚本,察看结果树结果为空,解决办法;
jmeter的bin目录下,打开命令窗口,执行jmeter -n -t jmeter脚本 -l 结果: 执行结束后,聚合报告打开结果,显示错误率100%:察看结果树中打开结果,显示无数据: 解决办法: ...
- shell脚本执行时报"bad interpreter: Text file busy"的解决方法
在执行一个shell脚本时,遇到了“-bash: ./killSession.sh: /bin/bash: bad interpreter: Text file busy”错误提示,如下所示: [or ...
- 关于在终端运行rosrun时找不到对应的包的解决方法
输入命令:rosrun kinect2_bridge kinect2_bridge 错误如下:[rospack] Error: package 'kinect2_bridge' not found 解 ...
- 运行eclipse弹出“Failed to load the JNI shared”解决方法
听周围的人说,看网上的人说eclipse有多么神奇.我不禁好奇万分,于是自己就去eclipse官网下载一个软件.咱也来用用,满怀兴奋的心情,一运行eclipse结果 出现下图的错误提示:“Failed ...
随机推荐
- mac下mysql5.7.18修改root密码
参考:http://blog.csdn.net/lijilong_/article/details/70991809 第一步:苹果->系统偏好设置->最下面点MySQL,关闭mysql服务 ...
- 第6章Zabbix分布式监控
Zabbix是一个分布式的监控系统.分布式监控适合跨机房.跨地域的网络监控.从多个Proxy收集数据,而每个Proxy可以采集多个设备的数据,从而轻松地构建分布式监控系统. ZabbixProxy可以 ...
- django模版 常用变量
在request中有很多有用的东西,如下: 获取当前用户: 1 {{ request.user }} 如果登陆就显示内容,不登陆就不显示内容: 1 2 3 4 5 {% if request.user ...
- multiprocessing.dummy
昨晚发现放在腾讯云主机上通过crontab定时执行用以爬去斗鱼分类页面数据的爬虫在执行的时候速度特别慢,于是想通过多线程来提高效率. 打开浏览器,键入关键字"python 多线程" ...
- Adjacent Bit Counts(uvalive)
For a string of n bits x1, x2, x3,…, xn, the adjacent bit count of the string (AdjBC(x)) is given by ...
- MySQL数据库篇之单表查询
主要内容: 一.单表查询的语法 二.关键字的执行优先级 三.简单查询 四.where约束 五.分组查询 group by 六.having过滤 七.查询排序 order by 八.限制查询的记录数 l ...
- Linux实战教学笔记15:磁盘原理
第十五节 磁盘原理 标签(空格分隔): Linux实战教学笔记 1,知识扩展 非脚本方式的一条命令搞定批量创建用户并设置随机10位字母数字组合密码. 1.1 sed的高级用法 [root@chensi ...
- 设置WebBrowser内核渲染模式
前不久开发一个项目,是采用WebBrowser作为外壳,加载网页,由于网页是采用html5来进行开发的,当通过WebBrowser加载网页后,html5中的特性 都无法正常显示,而通过ie浏览器打开时 ...
- 【HDU4405】Aeroplane_chess
题意 飞行棋.有n+1格,开始时在0号格子,每一步都要扔一个dice(六个面,概率相同)哪一面朝上他就会向前走x+i步.当x+i大于等于N的时候,游戏结束.另外,地图上有m条航线.第i条航线可以直接从 ...
- dpdk中log的使用方法
1 log简介 dpdk中通过log系统记录相关的日志信息,每一条日志除日志内容外,还有两个附加信息,log级别和log类型.开发人员可根据级别和类型对日志信息进行过滤,只记录必要的日志.1.1 ...