一、问题描述:tomcat执行shutdown.sh之后进程还存在
原因:项目中存在非守护线程Thread.currentThread().setDaemon(false);

二、解决方法(已验证,方便)

1、在catalina.sh添加如下内容

  1. if [ -z "$CATALINA_PID" ];then
  2. CATALINA_PID=$PRGDIR/CATALINA_PID
  3. fi

image.png

2、在shutdown.sh添加如下内容

  1. exec "$PRGDIR"/"$EXECUTABLE" stop -force "$@"

image.png

三、解决方法(已验证)

1、修改shutdown.sh

最后一句修改为
exec “$PRGDIR”/“$EXECUTABLE” stop -force “$@”

2、修改catalina.sh文件

新增
CATALINA_PID=./CATALINA_PID

3、新增catalina.pid文件

cd /var/runmkdir pxf
cd pxf/
ps -ef | grep pxf(显示的ID为4845)
echo 4845 > catalina.pid
查看是否写入:
cat /var/run/pxf/catalina.pid
[

](https://blog.csdn.net/ZhouyuanLinli/article/details/78085356)
另外一种方法:https://blog.csdn.net/shenxiaomo1688/article/details/105837864(未验证)