为什么用-k停止杀死tomcat实例的httpd?

由于某种原因,我每次停止使用httpd的第二个实例

/usr/sbin/httpd -f /otherplace/httpd.conf -k stop 

我的一个或两个tomcat实例被杀死(从内存中取出),没有给出任何错误或跟踪发生的事情。

我使用下面的命令启动了第二个实例:

 /usr/sbin/httpd -f /otherplace/httpd.conf -k start 

下面的细节:

我的Tomcat实例绑定到不同IP上的端口80。 httpd的第二个实例绑定到端口5634(没有任何绑定到这个端口)。 有tomcat的instaces,他们不会被杀害,就像一个随机的事情。

谢谢你的帮助。

也许尝试更改server.xml中的默认SHUTDOWN命令

 <Server port="8005" shutdown="SHUTDOWN" debug="0"> 

类似的东西

 <Server port="8005" shutdown="0fbb9aebcbfbef203eca71b6be367859" debug="0"> 

任何发送“SHUTDOWN”到默认端口的东西都会阻止tomcat,也许你的httpd通过连接器发送它。 参考文献1 , 参考文献2

Apache有一个模块 ,可以转发请求到tomcat。 这个模块是否启用? 尝试禁用它,如果你不需要它。

不是说我特别知道tomcat是如何执行关机的……我希望有一个与进程关联的pidfile,或一个控制端口,告诉应用程序closures。

然而,除了这些,脚本通过查看“ps -ef”输出(或类似的)来“寻找并杀死”是很常见的。 在这些情况下,杀死脚本很容易过于侵略,杀死所有匹配的pid(或者只是这些pid的父母)。

不能告诉你有多less次我一直在'vi'中编辑一个脚本,只是被一个激进的'停止'命令杀死了。