使用Jenkins的任务自动跑脚本后发现,tomcat服务刚启动就被杀死
2017-06-02 14:53
302 查看
在Jenkins的使用中,遇到过的一个场景是:使用python自动执行tomcat bin目录下的startup.bat开启批处理,服务开启成功后就随着python脚本执行结束该服务就被杀死,开始以为是python脚本的问题,但是直接执行是没有问题的;之后一直查运行环境差异,发现也不是这个原因;到后来才怀疑到Jenkins任务结束时候自动关掉了所有的子进程。通过以下shell脚本片段解决了问题:
1.第一种方案: #临时改变BUILD_ID值,使得Jenkins不会找到并结束掉python脚本启动的后台进程
OLD_BUILD_ID=$BUILD_ID
echo $OLD_BUILD_ID
BUILD_ID=dontKillMe
./run.sh restart
#改回原来的BUILD_ID值
BUILD_ID=$OLD_BUILD_ID
echo $BUILD_ID
问题的根本在于是Jenkins使用processTreeKiller杀掉了所有子进程,而且这是Jenkins的默认行为。其实回头来看这个问题,就发现Jenkins的做法非常合理。当一次build异常结束,或被人终止时,必然需要结束所有这次build启动的子进程。下面的link提供了更多细节,以及解决方法。https://wiki.jenkins-ci.org/display/JENKINS/ProcessTreeKiller
2.第二种方案:
使用jenkins的批处理或者ant 启动tomcat失败。查了一下原因说是 jenkins在脚本执行结束后,就认为任务结束了,但是脚本启动的相关子程序仍然在运行。由于jenkins认为任务已经结束了,就结束了该构建相关的子进程。
解决办法:增加一个环境变量。
BUILD_ID=pleaseDontKillMe and it works like a charm。
可以添加在执行任务的节点设置中添加该变量。
解决详细步骤:
前置说明:我是通过slave节点来启动tomcat 的,所以再slave节点配置上述环境变量。
1.第一种方案: #临时改变BUILD_ID值,使得Jenkins不会找到并结束掉python脚本启动的后台进程
OLD_BUILD_ID=$BUILD_ID
echo $OLD_BUILD_ID
BUILD_ID=dontKillMe
./run.sh restart
#改回原来的BUILD_ID值
BUILD_ID=$OLD_BUILD_ID
echo $BUILD_ID
问题的根本在于是Jenkins使用processTreeKiller杀掉了所有子进程,而且这是Jenkins的默认行为。其实回头来看这个问题,就发现Jenkins的做法非常合理。当一次build异常结束,或被人终止时,必然需要结束所有这次build启动的子进程。下面的link提供了更多细节,以及解决方法。https://wiki.jenkins-ci.org/display/JENKINS/ProcessTreeKiller
2.第二种方案:
使用jenkins的批处理或者ant 启动tomcat失败。查了一下原因说是 jenkins在脚本执行结束后,就认为任务结束了,但是脚本启动的相关子程序仍然在运行。由于jenkins认为任务已经结束了,就结束了该构建相关的子进程。
解决办法:增加一个环境变量。
BUILD_ID=pleaseDontKillMe and it works like a charm。
可以添加在执行任务的节点设置中添加该变量。
解决详细步骤:
前置说明:我是通过slave节点来启动tomcat 的,所以再slave节点配置上述环境变量。
相关文章推荐
- 使用Jenkins的任务自动跑脚本后发现,服务没有起来
- CentOS6.7下使用非root用户(普通用户)编译安装与配置mysql数据库并使用shell脚本定时任务方式实现mysql数据库服务随机自动启动
- [置顶] linux系统tomcat应为被定时任务脚本监控自动部署,服务器重启导致同一个tomcat出现很多进程,kill -9杀死又出现等一系列问题解决。
- Linux crontab的使用方式,sh脚本的编写,sh脚本自动启动tomcat服务器,sh监控系统运行情况
- 使用shell脚本 启动关闭tomcat服务
- windows使用vbs脚本监控tomcat,自动重启服务
- macos下使用jenkins+tomcat搭建自动构建环境的脚本配置
- linux使用shell脚本管理其他服务器Tomcat启动停止、自动发布
- Linux crontab的使用方式,sh脚本的编写,sh脚本自动启动tomcat服务器,sh监控系统运行情况
- 使用Java Service Wrapper设置tomcat作为linux服务并且开机自动启动
- 使用Java Service Wrapper设置tomcat作为linux服务并且开机自动启动
- 使用shell脚本 启动关闭tomcat服务
- Linux下脚本自动监控Tomcat服务
- 【错误解决】本地计算机上的mysql服务启动停止后,某些服务在未由其他服务或程序使用时将自动停止
- Shell脚本--自动部署tomcat应用服务
- linux APACHE2.2.10源码安装服务自动启动脚本
- windows环境下使用jenkins自动部署发布项目(eclipse + svn + maven + tomcat + jenkins),注意是windows环境
- Tomcat 设置为服务使用脚本 service
- 使用Python创建.sd服务定义文件,实现脚本自动发布ArcGIS服务
- CentOS Tomcat 的启动服务脚本