これはしばらくの間私を悩ませてきました。
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をサービスにまだ追加していません。それでも、シェルから手動で起動およびシャットダウンします。
次のコマンドを実行するだけで、2つのコマンドを回避できます。
pkill -f catalina
テキストと一致するプロセスを優雅に強制終了するにはcatalina。
catalinaプロセスがまだ実行されているかどうかを確認するには、次のようにします。
pgrep -fl catalina
そして最後にブルートフォースで殺すために試してみてください:
pkill -9 -f catalina
シャットダウンするクリーンな方法は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>