我在我的电脑上下载了tomcat(未作为服务安装)。 我正在编写一个脚本来升级运行在tomcat服务器上的webapp。脚本大致如下:
执行升级操作时,我需要知道tomcat已完全停止。但是,如果我运行$TOMCAT_HOME/bin/catalina.sh stop
,那么该脚本会在tomcat实际停止之前退出,如果我在tomcat仍在运行时执行升级操作,则可能会导致崩溃。此外,升级操作可能会很快完成,这可能导致tomcat启动在关闭完成之前执行,导致tomcat崩溃。
现在我的解决方案是在关机启动后等待5秒钟,但我想知道是否有更优雅的解决方案。
答案 0 :(得分:1)
验证进程是否仍在运行的一种方法是使用其进程ID。根据您的安装,您应该能够在以下位置找到tomcat服务器的进程ID:
/opt/tomcat/catalina.pid
理论上,如果此文件为空,那么该过程应该已经结束,尽管取决于实现和某些情况(tomcat崩溃?),这可能不是真的。为了安全起见,您可以获取此文件中的pid,并检查此过程是否仍在运行。
ps -p <pid>
如果进程仍处于活动状态,上面的命令将返回进程的pid,时间和命令。
答案 1 :(得分:0)
另一种选择是检查是否可以绑定某个端口(Tomcat使用的端口)。如果您无法在此端口上绑定,则表示Tomcat仍在运行。
无论如何,Felix的解决方案更合适,使用起来可能更好。我只是写了我的建议,以便提供更多的替代方案,并非所有Tomcat安装都有catalina.pid
(至少默认的没有)。