基本原理為啟動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 "$@"