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 ...
随机推荐
- Storm概念理解
组成: Topology是Storm里的最高抽象概念,相当于Hadoop里的MapReduce,Topology(流转换图)由Spouts和Bolts组成.Spout创建Stream,Stream由无 ...
- 恒大威武!关于SQL的一些基础知识整理回顾
首先的首先,恒大威武! 开始正题. 关系代数: 目前主流的关系型数据库,是建立在关系代数的基础上的,即他的数学支撑是关系代数. 关系代数主要包括如下几个二目运算:并运算union.交运算interse ...
- Docker remote api 开启
https://www.cnblogs.com/520playboy/p/7921633.html ExecStart=/usr/bin/dockerd-current -H unix:///var/ ...
- STL : 反向迭代器(Reverse Iterator)
1. 定义反向迭代器(Reverse Iterator)是一种反向遍历容器的迭代器.也就是,从最后一个元素到第一个元素遍历容器.反向迭代器将自增(和自减)的含义反过来了:对于反向迭代器,++运算将访问 ...
- 利用maven实现差异化配置
回顾过去 生产环境,测试环境,开发环境在不同的环境下会有各种各样的配置,比如数据库链接地址,账户名,密码等等.不同环境下都需要配置,但是配置却又不同.以前分享过一篇文章,介绍了我之前A公司的差异化配置 ...
- inl文件介绍
inl文件是内联函数的源文件.内联函数通常在C++头文件中实现,但是当C++头文件中内联函数过多的情况下,我们想使头文件看起来简洁点,能不能像普通函数那样将内联函数声明和函数定义放在头文件和实现文件中 ...
- [iOS]swift版内购
//内购Demo,看代码说话吧 class IAPTestViewController: UIViewController ,SKProductsRequestDelegate, SKPaymentT ...
- spring与mybatis
- NPM设置代理
npm获取配置有6种方式,优先级由高到底. 命令行参数. --proxy http://server:port即将proxy的值设为http://server:port. 环境变量. 以npm_con ...
- Opencv轮廓计数(学习)
#include <iostream>#include <opencv2/opencv.hpp>#include <opencv2/xfeatures2d.hpp> ...