背景需求
由于项目需要 ,用jenkins部署时需要重启tomcat,但是服务器中安装了不止一个tomcat,这就需要重启指定的tomcat而不影响其它tomcat的使用。
因为是用jenkins的shell脚本所以这些内容需要写到shell脚本里。
重启tomcat
红色字体的tomcat是要关闭的tomcat的名字。
#!/bin/sh
tomcat_path=/usr/local/tomcat
echo -- stop tomcat
#kill tomcat pid
echo -- stop tomcat
#kill tomcat pid
pidlist=`ps -ef | grep tomcat| grep -v grep | awk '{print $2}'`
if [ "$pidlist" = "" ]
then
echo "no tomcat pid alive!"
else
echo "tomcat Id list :$pidlist"
kill -9 $pidlist
echo "KILL $pidlist:"
echo "tomcat stop success"
fi
export BUILD_ID=XXXXXX
${tomcat_path}/bin/startup.sh
tomcat_path是自己服务器中tomcat路径,tomcat是自己的tomcat名字,一开始的时候没有加export BUILD_ID=XXXXXX,发现只能够把tomcat关闭而不能把tomcat启动,但是把脚本执行在linux 系统中是可以的。后来上网查需要加上export BUILD_ID,这个ID的内容可以随便写,发现脚本能够执行成功。
原因:说是 jenkins在脚本执行结束后,就认为任务结束了,但是脚本启动的相关子程序仍然在运行。由于jenkins认为任务已经结束了,就结束了该构建相关的衍生进程。
小结
记录一下遇到的问题以及解决方法,方便下次查看。