Tomcatは稼働していますか?


109

TomcatがUnix環境で実行されているかどうかを人々が通常確認する方法を知りたい。

プロセスを使用して実行されていることを確認するか、

ps -ef | grep java
ps -ef | grep logging

または、ポート番号がアクティブであることを確認します

netstat -a | grep 8080

Tomcatが実行されていることを確認するより良い方法はありますか?上記は、Tomcatが実行されていることを確認する「ハッキー」な方法のようです。

回答:


57

なぜgrep ps、pidが$CATALINA_PIDファイルに書き込まれたのですか?

cronTomcatがダウンしたときに電子メールを送信する'dチェッカースクリプトがあります。

kill -0 `cat $CATALINA_PID` > /dev/null 2>&1
if [ $? -gt 0 ]
then
    echo "Check tomcat" | mailx -s "Tomcat not running" support@dom.com
fi

wgetTomcatの状態を確認するためにも使用できると思います。ユーザーロードなどの診断ページがある場合、定期的にフェッチして解析し、問題がないかどうかを判断できます。


これはウィンドウで簡単にできますか?Windowsの同等のコマンドを変更し、それをバッチファイルに入れて、スケジューラーでスケジュールしますか?
liltitus27 14

あなたはtasklist |find /I "Tomcat" || echo "Tomcat not running"batファイルでの行に沿って何かをすることができますが、プロセス名が何であるかによっては、Tomcatではなくjavaを見つける必要があるかもしれません。
GL2014 14

1
OSにインストールされたTomcatから$ CATALINA_PIDの値が何であるかを知るには、次を試してください ps aewwx | grep CATALINA_PID 。他の環境変数の中で、実行中のプロセスの出力にそれが見つかります。Debian 8では、この値は次のとおりです。CATALINA_PID= / var / run / tomcat8.pid
教授Falken

2
pidファイルが存在しない可能性があることに注意することが重要です。これは、環境とtomcatの起動方法によって異なります。起動時にpidファイルを作成するには、この回答を参照してください。
Alberto de Paola 2016

92

私のLinuxシステムでは、startup.shスクリプトを使用してTomcatを起動します。実行中かどうかを知るには、

ps -ef | grep tomcat  

出力結果にtomcatフォルダーへの完全なパスが含まれている場合、それは実行されています


68

代わりにこれを試してください。ルート権限が必要なため、sudoを使用してください。

sudo service tomcat7 status

17
Tomcatがサービスでない場合はどうなりますか?代わりにパッケージ。
emeraldhieu 2015

1
その場合、@ Emerald214を取得しますtomcat7: unrecognized service
Yar

@年、それはあなたのTomcatバージョンに依存します
tmh

14

netstat -lnp | grep 8080Tomcatのリスニングポートを知っている場合は、おそらく最良の方法でしょう。これが機能していることを確認したい場合は、接続を確立してHTTP要求を送信し、応答を取得する必要があります。これはプログラムで、または任意のWebブラウザーを使用して行うことができます。


あなたがポートを知っていれば、私はこれは実行ファイルがなどのサービスかどうか、あなたがTomcatをインストールする方法に応じて実行されているかどうかをチェックする方法にばらつきがあることを考えると、最も簡単な方法だと思います
Jaffer

9

次の方法でTomcatのステータスを確認できます。

ps -ef | grep tomcat  

tomcatが実行されている場合、これはtomcatパスを返します

netstat -a | grep 8080

ここで、8080はTomcatポートです


7

Tomcatがローカルにインストールされている場合は、ブラウザーウィンドウに次のURLを入力します。{localhost:8080}

これにより、次のメッセージを含むTomcatホームページが表示されます。

これが表示されている場合、Tomcatは正常にインストールされています。おめでとう!

tomcatが別のサーバーにインストールされている場合は、replace localhostを有効なホスト名に置き換えるか、tomcatがインストールされている場所に入力します。

上記は、tomcatがデフォルトのポート8080を使用する標準インストールに適用されます。


19
Tomcatが別のサーバーにインストールされている場合、ブラウザからアクセスできなくても、Tomcatが実行されているかどうかはわかりません。到達できない可能性があります。
マルコラッコビッチ2013年

UbuntuにTomcat8をインストールしましたが、localhost:8080にアクセスすると、「接続できません」というメッセージが表示されます。
ibodi 2018

1
Linuxにヘッドレスサーバーがある場合、これはオプションではありません。
クラウスNji、

5

wget urlまたはcurl url urlは、使用可能なtomcatサーバーのURLですwget http://localhost:8080。例: 次に、終了コードが0かどうかを確認します-tomcatが起動しています。


4

Tomcatが起動しているかどうかをチェックするシェルスクリプトを作成し、shのcronを設定して数分ごとにチェックするようにし、停止している場合はTomcatを自動起動します。以下のコードのサンプルスニペット

TOMCAT_PID=$(ps -ef | awk '/[t]omcat/{print $2}')
echo TOMCAT PROCESSID $TOMCAT_PID

if [ -z "$TOMCAT_PID" ]
then
    echo "TOMCAT NOT RUNNING"
    sudo /opt/tomcat/bin/startup.sh
else
   echo "TOMCAT RUNNING"
fi

tomcatを停止しても、常に「TOMCAT RUNNING」を返すシェルスクリプトを作成しました。しかし、コンソールでコマンドを実行すると、問題なく動作しました。
Charles PHAM

シェルスクリプト名がtomcatキーワードではないことを確認してください。スクリプトにtomcat名が含まれている場合、プロセスリストにシェルスクリプト名が表示され、コードはtomcatが実行されていると見なされます。スクリプトにtomcatキーワードなしで任意の名前を付けることができます
Devendra Dora

3

Tomcatは、実行中のプロセスまたは開いているポートが必ずしも実際に要求を処理していることを意味するわけではないという点で、かなり気難しいと感じました。私は通常、既知のページを取得し、そのコンテンツを事前に計算された期待値と比較しようとします。


3

いつもしています

tail -f logs/catalina.out

そこを見ると

INFO: Server startup in 77037 ms

それから私はサーバーが稼働していることを知っています。


2

警告システムを設定しようとしていますか?単純な「ハートビート」の場合は、TomcatポートにHTTPリクエストを送信します。

より複雑な監視を行うには、JMXやSNMPを設定してJVM統計を表示できます。NagiosをSNMPプラグイン(JMXへのブリッジ)で実行して、Tomcatのメモリ使用量をチェックし、10〜15分ごとにスレッドプールサイズを要求します。

http://tomcat.apache.org/tomcat-6.0-doc/monitoring.html

アップデート(2012):

「monit」を使用してTomcatプロセスをチェックするようにシステムをアップグレードしました。私は本当にそれが好き。非常に少ない構成で、サービスが実行されていることを自動的に確認し、実行されていない場合は自動的に再起動します。(メールアラートを送信する)。/etc/init.dスクリプトと統合したり、プロセス名で確認したりできます。


1

私のtomcatインスタンスにはtomcat_という名前が付けられています。例えば。tomcat_8086、私は使用します

ps aux | grep tomcat

他の方法はncユーティリティを使用しています

nc -l 8086 (ポート番号 )

または

ps aux | grep java


1

このコマンドを試してください

ps -ef | awk '/[t]omcat/{print $2}' 

tomcatが実行されている場合は、pidを返します。


0
$ sudo netstat -lpn |grep :8080

ポート番号を確認するには

$ ps -aef|grep tomcat

Tomcatがサーバーの下で実行されていますか。

tsssinfotech-K53U infotech # ps -aef|grep tomcat

ルート9586 9567 0 11:35 pts / 6 00:00:00 grep --colour = auto tomcat


0

基本的にテストしたい

  1. Tomcatインスタンスへの接続
  2. 基本的な統計を収集する
  3. UNIXプロセスが実行されているかどうか

3番目の選択肢はすでに十分に回答されているので、最初の2つの選択肢を評価します。

最も簡単なのは、いくつかの基本的なメトリックを収集するWebApp上のWebページを開発し、結果を読み取ったり、接続の問題を検出したりできるクライアントを用意することです。

そのためには、いくつかの問題があります


0

これが私の2セントです。

クラスター設定用に複数のTomcatインスタンスを異なるポートで実行しています。次のコマンドを使用して、異なるポートで実行されている各プロセスを確認します。

/sbin/fuser 8080/tcp

必要に応じてポート番号を置き換えます。

そして、プロセスを強制終了するに-kは、上記のコマンドで使用します。

  • これはps -ef、コマンドを呼び出しgrepてその上で別のコマンドを呼び出す方法や他のコマンドよりもはるかに高速です。
  • tomcatの複数のインストール、または実際には同じサーバーで実行されているポートを使用する他のサーバーでうまく機能します。

BSDオペレーティングシステムでの同等のコマンドは次のとおりです。fstat


0

tomcat.sh これを簡単に知ることができます。

tomcat.shの使用法のドキュメントは言う:

引数なし:実行中の場合、TomcatのプロセスIDを表示します。それ以外の場合は何もしません。

したがって、コマンドプロンプトでコマンドを実行し、pidを確認します。

$ tomcat.sh

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.