0

コンピューターにTomcatをダウンロードしました(サービスとしてインストールされていません)。Tomcatサーバーで実行されているWebアプリをアップグレードするスクリプトを書いています。スクリプトは大まかに次のように機能します。

  • Tomcatを停止します
  • いくつかのアップグレード操作を実行します
  • Tomcatを起動します

アップグレード操作を実行するとき、Tomcatが完全に停止していることを知る必要があります。ただし、$TOMCAT_HOME/bin/catalina.sh stop実行すると、Tomcatが実際に停止する前にそのスクリプトが終了し、Tomcatの実行中にアップグレード操作を実行すると、クラッシュが発生する可能性があります。さらに、アップグレード操作がすぐに終了する可能性があります。これにより、シャットダウンが完了する前にTomcatの起動が実行され、Tomcatがクラッシュする可能性があります。

今のところ私の解決策は、シャットダウンが開始されてから5秒間待つことですが、この問題に対してより洗練された解決策があるかどうか疑問に思っています。

4

2 に答える 2

1

プロセスがまだ実行されているかどうかを確認する 1 つの方法は、そのプロセス ID を使用することです。インストールによっては、Tomcat サーバーのプロセス ID を次の場所で見つけることができるはずです。

/opt/tomcat/catalina.pid

理論的には、このファイルが空の場合、プロセスは終了しているはずですが、実装や特定の状況 (Tomcat のクラッシュなど) によっては、そうでない場合もあります。安全のために、このファイルで見つかった pid を取得して、このプロセスがまだ実行されているかどうかを確認してください。

ps -p <pid>

上記のコマンドは、プロセスがまだアクティブである場合、プロセスの pid、時間、およびコマンドを返します。

于 2012-11-17T14:53:09.137 に答える
0

別のオプションは、特定のポート (Tomcat が使用するポート) をバインドできるかどうかを確認することです。このポートでバインドできない場合は、Tomcat がまだ実行中であることを意味します。

とにかく、Felix のソリューションの方が適切であり、おそらくそれを使用する方がよいでしょう。より多くの代替手段を提供するために提案を書いただけであり、すべての Tomcat インストールにcatalina.pidあるわけではありません (少なくともデフォルトのものにはありません)。

于 2012-11-17T17:18:21.177 に答える