这一直在困扰我一段时间。
在我的JSF开发周期中,我做了很多的tomcat重载,有时甚至到了重启tomcat的地步。 我注意到有时候,使用shutdown.shclosurestomcat是不行的,因为通过startup.sh启动它时,地址已经在使用端口8080.而在linux shell中,我必须做这样的事情:
ps auwx | grep -i tomcat kill -9 <tomcatPid>
有什么办法可以干净地closurestomcat,就像在Windows中的tomcat服务?
我目前正在使用opensuse linux 11.2,而且我还没有将我的tomcatjoin到我的服务中。 仍然从shell手动启动和closures它。
您可以通过简单地运行来避免2个命令:
pkill -f catalina
优雅地杀死与文本catalina匹配的进程。
为了检查卡塔利娜进程是否还在运行,你可以这样做:
pgrep -fl catalina
最后用暴力杀人试试:
pkill -9 -f catalina
closures它的干净方式是kill <tomcatPid> 。 这将启动JVMclosures进程,包括servlet上下文销毁机制。 在极less数情况下,JVM会停滞在关机过程中,您将需要使用kill -9 <tomcatPid>来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>