Tomcatインスタンスを停止し、.warファイルとアプリケーションディレクトリを削除し、NFSマウントからwebappsディレクトリに新しい.warファイルをコピーして、Tomcatインスタンスを再起動するスクリプトを作成しました。スクリプトはうまく機能しますが、何らかの理由でTomcatインスタンスが終了しないことを心配しています。 PIDが見つからない場合は、デーモンが終了したことをスクリプトで確認し、次のステップに進む前に終了するようにするにはどうすればよいですか?可能であれば、ifステートメントをawk
orでどのように設定する必要がありますか?sed
答え1
あなたができることの1つは、Tomcatのpidをファイルに保存してからそのファイルを読み、killコマンドでpidを使用することです。 tomcatのpidを保存するには、tomcatのcatalina.shに次の行を追加します。
CATALINA_PID=$CATALINA_HOME/tomcat.pid
これにより、catalinaのホームディレクトリにtomcat.pidファイルが作成され、現在のプロセスのpidが保存されます。その後、コマンドを使用できます
kill -9 $(cat path_to_catalina_home/tomcat.pid)
それ以外の場合は、単にコマンドを使用してください
pkill -9 tomcat_directory_name
"tomcat_directory_name"またはpkillコマンドに渡すすべてのエントリは一意である必要があります。それ以外の場合、システムは複数のプロセスを終了します。より長いバージョンのpkillを使用することもできます。
ps aux | grep tomcat_directory_name | grep -v grep | awk '{print "kill -9 " $2}' | bash -v
これはpkillと同じことをしますが、もう少し安全です。 bash -vを削除して、最終的に正しいpidが得られるまでこのコマンドをテストできます。