实际工作中,如果发生通过shutdown.sh停止不了tomcat服务的情况,可以使用如下两种方法解决。
1、使用脚本停止服务
#!/bin/bash
userList=(root vlog)
for i in ${userList[*]}
do
users=$i
if [[ "$users" == "vlog" ]];then
pid=$(ps -ef|grep '/bin/java' |grep -v grep |grep vlog |awk '{print $2}')
kill -9 $pid
fi
done
上述脚本是杀掉用户为vlog的tomcat进程,每次调用一下即可,其他用户的类似修改下userList和相关逻辑即可。
2、改造tomcat安装包中的脚本实现停服务功能
找到tomcat安装目录(如:/home/vlog/apache-tomcat-8.0.53/bin),在该目录下有个catalina.sh脚本,在脚本的上面添加一行
CATALINA_PID="tomcat.pid"
同时修改bin目录下的shutdown.sh脚本,在脚本的最后一行,添加一个 -force参数,如下
exec "$PRGDIR"/"$EXECUTABLE" stop -force "$@"
这样每次启动tomcat的时候,都会将当前运行的pid写入到 bin/tomcat.pid文件中,在停止脚本中kill掉该pid的java进程