Tomcat无法使用shutdown命令杀死的问题

问题描述

在这里插入图片描述
在使用shutdown命令关闭tomcat服务的时候出现如图报错,但是服务确实已经无法访问到了,使用ps -ef | grep tomcat可以看到tomcat进程仍然存在。

问题解决

解决方案1
	查找到所有的tomcat,然后手动杀掉(缺点是每次都得操作,如果嫌麻烦可以使用第二种方案)
	ps -ef | grep tomcat
	kill -9  pid
解决方案2(需要在tomcat停止的状态下操作)
基本原理为启动tomcat时记录启动tomcat的进程id(pid),关闭时强制杀死该进程
  • 第一步: 修改tomcat下bin目录中的catalina.sh文件,添加如下内容,作用为记录tomcat的pid

      #设置记录CATALINA_PID。
      #该设置会在启动时候bin下新建一个CATALINA_PID文件
      #关闭时候从CATALINA_PID文件找到pid,kill进程,同时删除CATALINA_PID文件
      if [ -z "$CATALINA_PID" ]; then
    		CATALINA_PID=$PRGDIR/CATALINA_PID
      fi
    

在这里插入图片描述

  • 第二步:修改shutdown.sh文件,在最后一行添加参数 -force,效果如下
    在这里插入图片描述
<think>好的,用户想了解如何正确停止或杀死Tomcat服务器进程。我之前看过一些引用资料,得先整理一下。首先,根据引用[2],正确的步骤是先查询Tomcat的进程ID(PID),然后用kill命令终止。常见的做法是用ps配合grep来找进程,比如ps -ef | grep tomcat,这样可以找到对应的PID。但用户提到之前用kill -9返回“无此过程”,可能的原因是什么呢?引用[1]中提到用户可能输入了错误的进程ID,或者进程已经被终止了,所以系统找不到。这时候需要确认PID是否正确,或者是否还有其他相关进程。 另外,引用[3]里提到写一个脚本来自动kill进程,可能需要更准确的命令。比如使用pgrep来查找PID,或者结合awk提取信息。还有,正常停止Tomcat应该优先使用shutdown.sh脚本,这在引用[4]里有说明,启动用的是startup.sh,关闭自然也是对应的shutdown.sh。如果脚本无效,再考虑强制终止。 用户可能遇到的问题可能有几种情况:1. Tomcat没有正确关闭,残留进程;2. 使用kill命令时权限不足,需要sudo;3. 多个Tomcat实例运行,导致杀错进程。需要检查所有可能的进程,例如用ps aux | grep java,因为TomcatJava进程,可能有多个相关进程,如Bootstrap类,如引用[5]里的例子所示。 总结下来,正确的步骤应该是先尝试正常关闭,使用shutdown.sh,如果无效再查找PID并kill。另外,检查是否有多个进程需要终止,确保使用正确的PID,必要时用sudo提升权限。同时,用户可能需要注意环境变量或路径是否正确,特别是当Tomcat安装在非标准目录时,可能需要进入bin目录执行脚本。</think>### 如何正确停止或杀死Tomcat服务器进程 #### 方法1:通过Tomcat自带脚本正常关闭(推荐) 1. **进入Tomcat的bin目录** ```bash cd /path/to/tomcat/bin ``` 2. **执行关闭脚本** ```bash ./shutdown.sh ``` 该命令会触发Tomcat的优雅关闭流程,释放资源并终止进程[^4]。 #### 方法2:手动查找并终止进程 若`shutdown.sh`失效(例如进程卡死),可按以下步骤操作: 1. **查询Tomcat进程PID** ```bash ps -ef | grep tomcat ``` 或更精准地过滤Java进程: ```bash ps aux | grep java | grep -i Bootstrap ``` 输出示例: ``` sun 5144 1 0 10:21 ... org.apache.catalina.startup.Bootstrap start ``` 其中`5144`即为PID[^5]。 2. **终止进程** ```bash kill -9 5144 # 强制终止 ``` 或先尝试普通终止: ```bash kill 5144 # 允许进程执行清理操作 ``` 若普通终止无效,再使用`kill -9`[^2][^3]。 #### 方法3:组合命令快速操作 ```bash kill -9 $(ps -ef | grep tomcat | grep -v grep | awk '{print $2}') ``` 该命令会自动提取PID并强制终止进程[^3]。 #### 常见问题排查 1. **"无此过程"错误** - 确认PID是否正确(可能进程已终止)[^1] - 检查是否有多个Tomcat实例(需逐个终止) 2. **权限不足** 在命令前添加`sudo`: ```bash sudo kill -9 5144 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值