5

クラッシュ後にtomcatを再起動するシェルスクリプトを作成しています。スクリプトでこのメッセージを処理する必要があるのではないかと思います。「Tomcatサーブレットエンジンは実行されていませんが、pidファイルは存在します。」このメッセージはどういう意味ですか?Tomcatを再起動する必要があるエラーメッセージとしてそれを考慮する必要がありますか?

私のスクリプトは次のとおりです。

#!/bin/bash
SERVICE=/etc/init.d/tomcat7
STOPPED_MESSAGE=" * Tomcat servlet container is not running."  
PID_FILE_MESSAGE=" * Tomcat servlet engine is not running, but pid file exists."

if [ "`$SERVICE status`" == "$STOPPED_MESSAGE" ];
then  
{
    $SERVICE start
}
else
    if [ "`$SERVICE status`" == "$PID_FILE_MESSAGE" ];
    then
    {
        $SERVICE restart
    }
    fi
fi
4

2 に答える 2

4

PIDの定義は次のとおりです。PIDファイルは、プロセス識別子を含むファイルです。Tomcatの起動スクリプトがCATALINA_PID環境変数が適切に設定された状態で実行されている場合、TomcatプロセスのPIDは起動時にファイルに記録されます。Tomcatを起動しようとしたときにファイルが存在する場合、スクリプトは(おそらく有効な)PIDファイルを壊したくないため、実行を拒否します。

CATALINA_PIDTomcatが実行されていないことが確実な場合は、ファイルを削除して(環境変数から利用できるはずです)、再試行してください。

特定の(テキスト)出力をチェックする代わりに終了コードを使用することについての@jordanmのコメントを共有します。最新バージョンのTomcatは、上記のメッセージを使用しないため、非常に壊れやすくなっています。

自己再起動サービスが必要な場合は、jsvcを検討してください。これは、実際にはソース形式のTomcatバイナリとともに出荷されます。

于 2012-08-05T03:40:06.497 に答える
1

Tomcatを再起動したときに同じ問題が発生しました。またjava.net.BindException、cataline.outログファイルに「:要求されたアドレスを割り当てることができません」が見つかりました。

Soultion:Tomcatkillall -9 javaを再起動して、すべてのJavapidを強制終了します。

私にとって問題は解決されました

于 2014-11-17T13:18:16.700 に答える