我的 bash 脚本如何检测到雄猫已完全停止



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

  • 停止雄猫
  • 执行多个升级操作
  • 启动雄猫

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

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

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

/opt/tomcat/catalina.pid

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

ps -p <pid>

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

另一种选择是检查是否可以绑定某个端口(Tomcat 使用的端口)。如果无法在此端口上绑定,则表示 Tomcat 仍在运行。

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

相关内容

  • 没有找到相关文章

最新更新