Läuft Tomcat?

109

Interessiert zu wissen, wie Benutzer normalerweise überprüfen, ob Tomcat in einer Unix-Umgebung ausgeführt wird.

Ich überprüfe entweder, ob der Prozess mit ausgeführt wird

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

oder ich überprüfe, ob die Portnummer aktiv ist

netstat -a | grep 8080

Gibt es eine bessere Möglichkeit, um zu überprüfen, ob Tomcat ausgeführt wird? Das Obige scheint eine "hackige" Methode zu sein, um zu überprüfen, ob Tomcat ausgeführt wird.

zickig
quelle

Antworten:

57

Warum grep ps, wenn die PID in die $CATALINA_PIDDatei geschrieben wurde?

Ich habe ein cronÜberprüfungsskript, das eine E-Mail sendet, wenn Tomcat nicht verfügbar ist:

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

Ich denke, Sie könnten auch verwenden wget, um die Gesundheit Ihres Kater zu überprüfen. Wenn Sie eine Diagnoseseite mit Benutzerlast usw. haben, können Sie diese regelmäßig abrufen und analysieren, um festzustellen, ob etwas schief geht.

Dogbane
quelle
Ist das mit Windows so einfach? Würde ich nur die Befehle für Windows-Entsprechungen ändern, sie in eine Batch-Datei werfen und dann über den Scheduler planen?
Liltitus27
Sie könnten etwas tasklist |find /I "Tomcat" || echo "Tomcat not running"in der Art einer Bat-Datei tun , aber Sie müssen möglicherweise Java finden, nicht Tomcat, je nachdem, wie der Prozessname lautet.
GL2014
1
Um zu erfahren, welchen Wert $ CATALINA_PID von Ihrem vom Betriebssystem installierten Tomcat hat, versuchen Sie: ps aewwx | grep CATALINA_PID und Sie finden ihn unter anderen Umgebungsvariablen in der Ausgabe für den laufenden Prozess. In Debian 8 ist dieser Wert: CATALINA_PID = / var / run / tomcat8.pid
Professor Falken
2
Es ist wichtig zu beachten, dass eine PID-Datei möglicherweise nicht vorhanden ist. Dies hängt von der Umgebung und dem Start von Tomcat ab. In dieser Antwort wird beim Start eine PID-Datei erstellt.
Alberto de Paola
92

Auf meinem Linux-System starte ich Tomcat mit dem Skript startup.sh. Um zu wissen, ob es läuft oder nicht, benutze ich

ps -ef | grep tomcat  

Wenn das Ausgabeergebnis den gesamten Pfad zu meinem Tomcat-Ordner enthält, wird es ausgeführt

Thai Tran
quelle
68

Versuchen Sie dies stattdessen und verwenden Sie sudo, da Root-Berechtigungen erforderlich sind

sudo service tomcat7 status
Kemboi
quelle
17
Was ist, wenn Tomcat kein Dienst ist? Stattdessen ein Paket.
Smaragdhieu
1
@ Emerald214 in diesem Fall erhalten Sie einetomcat7: unrecognized service
Yar
@Yar, es hängt von Ihrer Tomcat-Version ab
tmh
14

netstat -lnp | grep 8080wäre wahrscheinlich der beste Weg, wenn Sie Tomcats Abhörport kennen. Wenn Sie sicher sein möchten, dass dies funktioniert, müssen Sie eine Verbindung herstellen, eine HTTP-Anfrage senden und eine Antwort erhalten. Sie können dies programmgesteuert oder mit einem beliebigen Webbrowser tun.

Michael Goldshteyn
quelle
Wenn Sie den Port kennen, ist dies meiner Meinung nach der einfachste Weg, da es Unterschiede in der Art und Weise gibt, wie Sie überprüfen, ob die ausführbare Datei ausgeführt wird, je nachdem, wie Sie Tomcat installiert haben, ob es sich um einen Dienst handelt oder nicht usw.
Jaffer,
9

Sie können den Status von Tomcat auf folgende Weise überprüfen:

ps -ef | grep tomcat  

Dies gibt den Tomcat-Pfad zurück, wenn der Tomcat ausgeführt wird

netstat -a | grep 8080

Dabei ist 8080 der Tomcat-Port

Dhanish Jose
quelle
7

Wenn Tomcat lokal installiert ist, geben Sie die folgende URL in ein Browserfenster ein: {localhost: 8080}

Daraufhin wird die Tomcat-Startseite mit der folgenden Meldung angezeigt.

Wenn Sie dies sehen, haben Sie Tomcat erfolgreich installiert. Herzliche Glückwünsche!

Wenn tomcat auf einem separaten Server installiert ist, können Sie replace localhost durch einen gültigen Hostnamen oder Iess eingeben, auf dem tomcat installiert ist.

Dies gilt für eine Standardinstallation, bei der Tomcat den Standardport 8080 verwendet

Lokanath
quelle
19
Wenn Tomcat auf einem separaten Server installiert ist und Sie nicht über einen Browser darauf zugreifen können, können Sie nicht sicher sagen, ob es ausgeführt wird oder nicht: Möglicherweise ist es nicht erreichbar.
Marco Lackovic
Ich habe Tomcat8 unter Ubuntu installiert, aber wenn ich zu localhost: 8080 gehe , wird die Meldung "Verbindung nicht möglich" angezeigt.
Ibodi
1
Wenn Sie unter Linux einen Headless-Server haben, ist dies keine Option.
Klaus Nji
5

wget urloder curl url wobei url eine URL des Tomcat-Servers ist, die verfügbar sein sollte, zum Beispiel : wget http://localhost:8080. Überprüfen Sie dann den Exit-Code, wenn er 0 ist - Tomcat ist aktiv.

Dikla
quelle
4

Erstellen Sie ein Shell-Skript, das überprüft, ob Tomcat aktiv oder inaktiv ist, und legen Sie einen Cron für sh fest, damit es alle paar Minuten überprüft wird, und starten Sie Tomcat automatisch, wenn es inaktiv ist. Beispiel eines Codeausschnitts unten

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
Devendra Dora
quelle
Ich habe ein Shell-Skript erstellt, das immer "TOMCAT RUNNING" zurückgibt, auch wenn ich Tomcat gestoppt habe. Aber wenn ich den Befehl auf der Konsole ausführe, hat es gut funktioniert.
Charles PHAM
Stellen Sie sicher, dass der Name des Shell-Skripts nicht das Schlüsselwort tomcat ist. Wenn das Skript den Namen tomcat hat, wird in der Prozessliste der Name des Shell-Skripts angezeigt, und der Code wird so aussehen, als würde Tomcat ausgeführt. Sie können dem Skript einen beliebigen Namen ohne das Schlüsselwort tomcat geben
Devendra Dora
3

Ich habe festgestellt, dass Tomcat ziemlich pingelig ist, da ein laufender Prozess oder ein offener Port nicht unbedingt bedeutet, dass tatsächlich Anforderungen verarbeitet werden. Normalerweise versuche ich, eine bekannte Seite zu erfassen und ihren Inhalt mit einem vorberechneten erwarteten Wert zu vergleichen.

Alex Howansky
quelle
3

mache ich immer

tail -f logs/catalina.out

Wenn ich dort sehe

INFO: Server startup in 77037 ms

dann weiß ich, dass der Server aktiv ist.

Konkit
quelle
2

Versuchen Sie, ein Warnsystem einzurichten? Führen Sie für einen einfachen "Herzschlag" eine HTTP-Anforderung an den Tomcat-Port aus.

Für eine detailliertere Überwachung können Sie JMX und / oder SNMP so einrichten, dass JVM-Statistiken angezeigt werden. Wir führen Nagios mit dem SNMP-Plugin (Bridges to JMX) aus, um die Speichernutzung von Tomcat zu überprüfen und die Größe des Thread-Pools alle 10-15 Minuten anzufordern.

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

Update (2012):

Wir haben unsere Systeme so aktualisiert, dass sie "monit" verwenden, um den Tomcat-Prozess zu überprüfen. Ich mag es wirklich. Mit sehr wenig Konfiguration wird automatisch überprüft, ob der Dienst ausgeführt wird, und automatisch neu gestartet, wenn dies nicht der Fall ist. (Senden einer E-Mail-Benachrichtigung). Es kann in die Skripte /etc/init.d integriert oder anhand des Prozessnamens überprüft werden.

Will Glass
quelle
1

Da meine Tomcat-Instanzen als tomcat_ bezeichnet werden. Beispielsweise. tomcat_8086 benutze ich

#

ps aux | grep tomcat

Eine andere Methode ist die Verwendung des Dienstprogramms nc

nc -l 8086 (Port-Nummer )

Oder

ps aux | grep java

Himanshu Chauhan
quelle
1

Versuchen Sie diesen Befehl

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

Es wird die PID zurückgeben, wenn Tomcat ausgeführt wird.

Alin
quelle
0
$ sudo netstat -lpn |grep :8080

So überprüfen Sie die Portnummer

$ ps -aef|grep tomcat

Wird ein Kater unter dem Server ausgeführt?

tsssinfotech-K53U infotech # ps -aef|grep tomcat

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

Batchu Bhargava
quelle
0

Grundsätzlich möchten Sie testen

  1. Konnektivität zu Ihrer Tomcat-Instanz
  2. Sammeln Sie einige grundlegende Statistiken
  3. Gibt an, ob der Unix-Prozess ausgeführt wird

Ich werde die ersten beiden Optionen bewerten, da die dritte bereits ausreichend beantwortet wurde.

Am einfachsten ist es, auf Ihrer WebApp eine Webseite zu entwickeln, auf der einige grundlegende Messdaten erfasst werden, und einen Client zu haben, der die Ergebnisse lesen oder Konnektivitätsprobleme erkennen kann.

Dafür haben Sie mehrere Probleme

YoYo
quelle
0

Hier sind meine zwei Cent.

Ich habe mehrere Tomcat-Instanzen, die für mein Cluster-Setup an verschiedenen Ports ausgeführt werden. Ich verwende den folgenden Befehl, um jeden Prozess zu überprüfen, der an verschiedenen Ports ausgeführt wird.

/sbin/fuser 8080/tcp

Ersetzen Sie die Portnummer gemäß Ihren Anforderungen.

Und um den Prozess abzubrechen, verwenden Sie -kden obigen Befehl.

  • Dies ist viel schneller als der ps -efWeg oder andere Befehle, bei denen Sie einen Befehl aufrufen und einen anderen darüber aufrufen grep.
  • Funktioniert gut mit mehreren Installationen von Tomcat oder jedem anderen Server, der einen Port verwendet, der tatsächlich auf demselben Server ausgeführt wird.

Der entsprechende Befehl unter BSDBetriebssystemen lautetfstat

Raja Anbazhagan
quelle
0

tomcat.sh hilft Ihnen, dies leicht zu wissen.

Das Verwendungsdokument von tomcat.sh lautet:

Kein Argument: Zeigen Sie die Prozess-ID des Kater an, wenn er ausgeführt wird, andernfalls tun Sie nichts

Führen Sie den Befehl an Ihrer Eingabeaufforderung aus und suchen Sie nach pid:

$ tomcat.sh

Techflash
quelle