tomcat意外退出 A valid shutdown command was received via the shutdown port. Stopping the Server instance

原创
2020/06/30 21:58
阅读数 4.5K

  昨天在公司使用jenkins发布项目,没有成功,今天上午来了,试了一上午,不行。下午专门部署调试这个jenkins项目,公司jenkins在A机器上,项目部署在B机器,部署过程如下:

  • A机器 从gitlab下载最新代码
  • A机器 使用maven打包项目,在target目录产生*.war包
  • A机器 通过ssh将war包传输到B机器,并执行B的restart.sh脚本
  • B机器脚本功能:将war包放到tomcat的webapps目录中,重启tomcat
  • -

问题描述

这是我的B机器restart.sh脚本

#!/bin/bash
tomcat_home=/usr/local/system/apache-tomcat-8.0.52
jenkins_package=/usr/local/jenkins
SHUTDOWN=$tomcat_home/bin/shutdown.sh
STARTTOMCAT=$tomcat_home/bin/startup.sh
echo "关闭$tomcat_home"
$SHUTDOWN
ps -ef |grep tomcat |grep $tomcat_home |grep -v 'grep'|awk '{print $2}' | xargs kill -9

#删除webapp文件夹
rm $tomcat_home/webapps/* -rf
#删除日志文件,如果你不先删除可以不要下面一行
rm  $tomcat_home/logs/* -rf
#删除tomcat的临时目录
rm  $tomcat_home/work/* -rf
#删除cataline文件
rm -rf $tomcat_home/logs/catalina*
#拷贝打好的war包到tomcat
cp -f $jenkins_package/system.war $tomcat_home/webapps/system.war

echo "启动$tomcat_home"
$STARTTOMCAT
#sleep 5 #!加上这个,小伙!
#看启动日志
#tail -f $tomcat_home/logs/catalina.out

  我在jenkins启动的时候,观察启动过程,发现最后一步没有启动tomcat。查看catalina.out文件,最后输出一句:
org.apache.catalina.core.StandardServer.await A valid shutdown command was received via the shutdown port. Stopping the Server instance.
  不难看出shutdown、stopping字眼。
  tomcat自动停止了!!!
  经过一番网上冲浪,原因在远程执行脚本的问题上,A机器执行B机器的重启tomcat脚本的时候,脚本执行完,但是启动tomcat这个任务还未来的及进行,就在这个时候ssh远程连接关闭,脚本退出的时候,发给他的子进程(启动tomcat进程)信号,tomcat因为还没开始启动,就停止了!!!
  如果在启动tomcat命令执行后,延迟5秒退出,只要tomcat开始启动就不会因为脚本退出而关闭了!
  于是在$STARTTOMCAT下面加入一行 sleep 5 就行了!

参考

http://hongjiang.info/why-kill-2-cannot-stop-tomcat/

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
0 收藏
0
分享
返回顶部
顶部