从 Eclipse 运行时如何杀死 Tomcat?

Posted

技术标签:

【中文标题】从 Eclipse 运行时如何杀死 Tomcat?【英文标题】:How to kill Tomcat when running it from Eclipse? 【发布时间】:2011-05-19 11:18:46 【问题描述】:

我正在运行随 Eclipse 下载一起提供的 Tomcat(不,我不想下载和安装整个 Tomcat),有时它会在停止或重新启动时挂起,这是我能找到的唯一方法它的工作是重新启动我所有的 Eclipse。我在 Windows 下使用它。

有没有办法杀死Tomcat进程(任务管理器中没有出现)?

【问题讨论】:

【参考方案1】:

它在任务管理器中显示为javaw.exe。另一种方法是执行Tomcat/bin/shutdown.bat

关于挂起问题,您确定您的 web 应用程序没有产生可能会阻止 Tomcat 关闭的非托管线程吗?

【讨论】:

不,我没有检查我的 web 应用程序是否正在生成非托管线程。谢谢。 如何检查我的 web 应用程序是否没有生成可能会阻止 Tomcat 关闭的非托管线程?【参考方案2】:

在Windows上,如果你知道Tomcat监听的端口(下图为8080),你可以找到Tomcat进程的PID,然后从cmd杀掉它:

> netstat -aon | find "8080"
  TCP    0.0.0.0:8080           0.0.0.0:0              LISTENING       2196
  TCP    [::]:8080              [::]:0                 LISTENING       2196
> taskkill /pid 2196 /f
  SUCCESS: The process with PID 2196 has been terminated.

【讨论】:

【参考方案3】:

当在任务管理器中找不到tomcat时,我会使用更好的方法来关闭它。

1) 从以下链接下载 TCPView(仅 285kb)

http://technet.microsoft.com/en-in/sysinternals/bb897437.aspx

2) 解压文件夹并启动TCPView应用程序。

3) 右击java.exe并选择结束进程选项。

这很容易让你的tomcat停止。这个工具在监控端口使用方面非常有用。

注意:运行 TOMCATPATH/bin/shutdown.bat 可能不会在 Tomcat 包含一些恶魔或非托管时关闭 线程。在这种情况下,TCPView 可以正常工作,没有任何问题。

【讨论】:

下载附加软件应该永远是最后的手段。但是,此答案包含 shutdown.bat 可能无法正确关闭 Tomcat 的重要信息。 @doABarrelRoll721 谢谢,在生产环境中我确实接受它,但在本地系统中安装它并没有太大影响。我也希望这种方法是简单而更好的解决方法。【参考方案4】:

如果您使用 Linux,请尝试以下步骤。

    列出 Tomcat 进程(例如,ps aux | grep catalina) 找到如下所示的字符串:myname 2244 5.5 0.3 57020937 2110741 ? Sl Oct03 5160:01 /usr/lib/jvm/java-1.8.0-<...>/bin/java <...> org.apache.catalina.startup.Bootstrap start 复制粘贴/usr/lib/jvm/<...><...>.Bootstrap 之间的所有内容 在命令末尾添加stop 并运行它

基本上,您将使用 Eclipse 用来启动 Tomcat 并修改最后一个参数以停止 Tomcat 的相同命令。

【讨论】:

【参考方案5】:

您可以在 Eclipse 中为 Tomcat 服务器设置启动和关闭超时。如果超过了这些超时时间,Eclipse 将弹出一条消息,询问您是要杀死它,还是继续等待。

要设置这些,请在“服务器”选项卡中双击服务器的名称。它会打开一个像这样的窗口:

右侧有一个超时部分。我将启动时间设置为一天(这样我就可以调试启动而不会超时),关闭时间设置为 30 秒(通常这可能非常短,因为大多数应用程序都可以在强制关闭后毫无问题地存活)。

【讨论】:

当然,如果您的应用程序正在产生非托管线程,这似乎是 OP 的问题,那么无论如何都需要检测和清理。以上只是让 Eclipse 超时以防止您不得不等待永恒的一种巧妙方法。

以上是关于从 Eclipse 运行时如何杀死 Tomcat?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Eclipse 在 Tomcat 中运行 Maven 项目

从 Eclipse 中的项目中删除 Apache TomCat 运行时?

eclipse运行没反应显示already running

如何杀死Linux中特定端口上运行的进程?

在 Eclipse Mars 中找不到 Tomcat 运行时 [重复]

用 Eclipse 开普勒运行 tomcat