0

我在我的计算机上下载了tomcat(未作为服务安装)。我正在编写一个脚本来升级在 tomcat 服务器上运行的 web 应用程序。脚本大致是这样工作的:

  • 停止Tomcat
  • 执行多个升级操作
  • 启动tomcat

执行升级操作时,我需要知道tomcat 已完全停止。但是,如果我运行$TOMCAT_HOME/bin/catalina.sh stop,那么该脚本会在 Tomcat 实际停止之前退出,并且如果我在 Tomcat 仍在运行时执行升级操作,这可能会导致事情崩溃。此外,升级操作可能会很快完成,这会导致tomcat启动在关闭完成之前执行,从而导致tomcat崩溃。

现在我的解决方案是在启动关机后等待 5 秒钟,但我想知道是否有更优雅的解决方案。

4

2 回答 2

1

验证进程是否仍在运行的一种方法是使用其进程 ID。根据您的安装,您应该能够在以下位置找到您的 Tomcat 服务器的进程 ID:

/opt/tomcat/catalina.pid

理论上,如果这个文件是空的,那么进程应该已经结束,尽管取决于实现和某些情况(tomcat 崩溃?)这可能不是真的。为了安全起见,您可以使用在该文件中找到的 pid 并检查该进程是否仍在运行。

ps -p <pid>

如果进程仍然处于活动状态,上述命令将返回进程的 pid、时间和命令。

于 2012-11-17T14:53:09.137 回答
0

另一种选择是检查是否可以绑定某个端口(Tomcat 使用的端口)。如果不能在这个端口上绑定,说明Tomcat还在运行。

无论如何,Felix的解决方案更合适,使用它可能会更好。我只是为了提供更多替代方案而写了我的建议,并不是所有catalina.pid的 Tomcat 安装都有(至少默认安装没有)。

于 2012-11-17T17:18:21.177 回答