web-dev-qa-db-ja.com

LinuxでTomcatプロセスをスムーズにシャットダウンする

これはしばらくの間私を悩ませてきました。

JSF開発サイクルでは、Tomcatを何度もリロードし、場合によってはTomcatを再起動するところまで行きます。時々、shutdown.shを使用してTomcatをシャットダウンしても機能しないことがあります。これは、startup.shを介してTomcatを起動すると、アドレスがポート8080ですでに使用されていると表示されるためです。また、Linuxシェルでは、次のような操作を行う必要があります。 :

ps auwx | grep -i Tomcat
kill -9 <tomcatPid>

WindowsのTomcatサービスのように、Tomcatをクリーンにシャットダウンできる方法はありますか?

現在、opensuse linux 11.2を使用していますが、Tomcatをサービスにまだ追加していません。それでも、シェルから手動で起動およびシャットダウンします。

4
bertie

次のコマンドを実行するだけで、2つのコマンドを回避できます。

pkill -f catalina

テキストと一致するプロセスを優雅に強制終了するにはcatalina

catalinaプロセスがまだ実行されているかどうかを確認するには、次のようにします。

pgrep -fl catalina

そして最後にブルートフォースで殺すために試してみてください:

pkill -9 -f catalina
5
anubhava

シャットダウンするクリーンな方法はkill <tomcatPid>です。これにより、サーブレットコンテキスト破棄メカニズムを含むJVMシャットダウンプロセスが開始されます。まれに、JVMがシャットダウンプロセスでスタックし、プロセスを強制終了するためにkill -9 <tomcatPid>を使用する必要があります。

したがって、たとえば:

ps auwx | grep -i Tomcat
kill <tomcatPid>
sleep 10   # This value is dependent how long it takes for your app to shut down
ps auwx | grep -i Tomcat
if Tomcat is still alive
    kill -9 <tomcatPid>
0
sourcedelica