在Linux中顺利关闭tomcat进程

在Linux中顺利关闭tomcat进程

这件事已经困扰我有一段时间了。

在我的 JSF 开发周期中,我多次重新加载 tomcat,有时甚至需要重新启动 tomcat。我注意到,有时使用 shutdown.sh 关闭 tomcat 不起作用,因为通过 startup.sh 启动时,提示该地址已用于端口 8080。而在 linux shell 中,我必须执行如下操作:

ps auwx | grep -i tomcat
kill -9 <tomcatPid>

有没有什么方法可以彻底关闭 tomcat,就像 Windows 中的 tomcat 服务一样?

我目前正在使用 opensuse linux 11.2,但我还没有将 tomcat 添加到我的服务中。仍然从 shell 手动启动和关闭它。

答案1

您只需运行以下命令即可避免:

pkill -f catalina

优雅地终止与文本匹配的进程卡塔利娜

并检查是否卡塔利娜进程仍在运行您可以执行以下操作:

pgrep -fl catalina

最后,使用暴力手段杀死它,尝试:

pkill -9 -f catalina

答案2

干净的关闭方法是kill <tomcatPid>。这将启动 JVM 关闭进程,包括 servlet 上下文销毁机制。在极少数情况下,JVM 会卡在关闭进程中,您需要使用kill -9 <tomcatPid>来终止该进程。

例如:

ps auwx | grep -i tomcat
kill <tomcatPid>
sleep 10   # This value is dependent how long it takes for your app to shut down
ps auwx | grep -i tomcat
if tomcat is still alive
    kill -9 <tomcatPid>

相关内容