基本原理为启动tomcat时记录启动tomcat的进程id(pid),关闭时强制杀死该进程
第一步 :vi 修改tomcat下bin/catalina.sh文件,增加几行脚本,主要是记录tomcat的pid,如下:
#设置记录CATALINA_PID。
#该设置会在启动时候bin下新建一个CATALINA_PID文件
#关闭时候从CATALINA_PID文件找到pid,kill。。。同时删除CATALINA_PID文件
在PRGDIR=`dirname "$PRG"`后面加上:
if [ -z "$CATALINA_PID" ]; then
CATALINA_PID=$PRGDIR/CATALINA_PID
fi
第二步: vim tomcat的shutdown.sh文件,在最后一行加上-force:
bin/shutdown.sh exec "$PRGDIR"/"$EXECUTABLE" stop -force "$@" #加上 -force
---------------------------------------------------------
解决tomcat shutdown.sh 后进程还在问题
在 CentOS 下 shutdown.sh 发现 tomcat 并没有关闭,进程还在
ps -ef | grep tomcat
网上找到的解释:原因是因为项目中有非守护线程的存在。
解决方案
第一步 :vim修改tomcat下bin/catalina.sh文件,添加点东西,主要是记录tomcat的pid,如下:
PRGDIR=`dirname "$PRG"`
在上一行后添加如下行:
if [ -z "$CATALINA_PID" ]; then
CATALINA_PID=$PRGDIR/CATALINA_PID
fi
第二步 vim tomcat的shutdown.sh文件,在最后一行加上-force:
exec "$PRGDIR"/"$EXECUTABLE" stop -force "$@"