Czy Tomcat działa?

109

Interesuje mnie, jak ludzie zwykle sprawdzają, czy Tomcat działa w środowisku Unix.

Sprawdzam, czy proces działa przy użyciu

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

lub sprawdzam, czy numer portu jest aktywny

netstat -a | grep 8080

czy istnieje lepszy sposób sprawdzenia, czy Tomcat działa? Powyższe wydaje się być „hackowym” sposobem sprawdzenia, czy Tomcat działa.

ziggy
źródło

Odpowiedzi:

57

Dlaczego grep ps, skoro pid został zapisany do $CATALINA_PIDpliku?

Mam cronskrypt kontrolny, który wysyła e-mail, gdy Tomcat nie działa:

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

Przypuszczam, że możesz też wgetsprawdzić stan swojego kocura. Jeśli masz stronę diagnostyczną z ładowaniem użytkownika itp., Możesz ją okresowo pobierać i analizować, aby określić, czy coś jest nie tak.

dogbane
źródło
czy jest to tak łatwe w przypadku okien? czy mógłbym po prostu zmodyfikować polecenia dla odpowiedników systemu Windows, wrzucić je do pliku wsadowego, a następnie zaplanować za pomocą harmonogramu?
liltitus 27
Możesz zrobić coś podobnego do tasklist |find /I "Tomcat" || echo "Tomcat not running"pliku bat, ale może być konieczne znalezienie javy, a nie Tomcata, w zależności od nazwy procesu.
GL2014
1
Aby dowiedzieć się, jaka jest wartość $ CATALINA_PID z twojego Tomcata zainstalowanego przez system operacyjny, spróbuj: ps aewwx | grep CATALINA_PID a znajdziesz ją w danych wyjściowych uruchomionego procesu, wśród innych zmiennych środowiskowych. W Debianie 8 ta wartość to: CATALINA_PID = / var / run / tomcat8.pid
Professor Falken
2
Należy pamiętać, że plik pid może nie istnieć, zależy to od środowiska i sposobu uruchomienia tomcat. Zobacz tę odpowiedź, aby utworzyć plik pid podczas uruchamiania.
Alberto de Paola,
92

W moim systemie Linux uruchamiam Tomcat ze skryptem startup.sh. Aby wiedzieć, czy działa, czy nie, używam

ps -ef | grep tomcat  

Jeśli wynik wyjściowy zawiera całą ścieżkę do mojego folderu tomcat, to jest uruchomiony

Thai Tran
źródło
68

spróbuj tego zamiast tego, a ponieważ wymaga uprawnień roota, użyj sudo

sudo service tomcat7 status
Kemboi
źródło
17
A jeśli Tomcat nie jest usługą? Zamiast paczki.
emeraldhieu
1
@ Emerald214 w takim przypadku otrzymasztomcat7: unrecognized service
Yar
@Yar, to zależy od twojej wersji tomcat
tmh
14

netstat -lnp | grep 8080byłby prawdopodobnie najlepszym sposobem, jeśli znasz port nasłuchiwania Tomcata. Jeśli chcesz mieć pewność, że działa, będziesz musiał nawiązać połączenie, wysłać żądanie HTTP i uzyskać odpowiedź. Możesz to zrobić programowo lub za pomocą dowolnej przeglądarki internetowej.

Michael Goldshteyn
źródło
JEŚLI znasz port, myślę, że jest to najprostszy sposób, biorąc pod uwagę, że istnieją różnice w sposobie sprawdzania, czy plik wykonywalny działa w zależności od tego, jak zainstalowałeś Tomcat, czy jest to usługa, czy nie itp.
Jaffer
9

Możesz sprawdzić status tomcat na następujące sposoby:

ps -ef | grep tomcat  

To zwróci ścieżkę tomcat, jeśli tomcat jest uruchomiony

netstat -a | grep 8080

gdzie 8080 to port Tomcat

Dhanish Jose
źródło
7

Jeśli Tomcat jest zainstalowany lokalnie, wpisz następujący adres URL w oknie przeglądarki: {localhost: 8080}

Spowoduje to wyświetlenie strony głównej Tomcat z następującym komunikatem.

Jeśli widzisz ten komunikat, pomyślnie zainstalowałeś Tomcat. Gratulacje!

Jeśli Tomcat jest zainstalowany na oddzielnym serwerze, możesz wpisać replace localhost przez prawidłową nazwę hosta lub Iess, gdzie jest zainstalowany tomcat.

Powyższe dotyczy instalacji standardowej, w której Tomcat używa domyślnego portu 8080

Lokanath
źródło
19
Jeśli Tomcat jest zainstalowany na oddzielnym serwerze, brak dostępu do niego z przeglądarki nie powie Ci na pewno, czy działa, czy nie: może być nieosiągalny.
Marco Lackovic
Zainstalowałem Tomcat8 na Ubuntu, ale przejście do localhost: 8080 powoduje wyświetlenie komunikatu „Unable to connect”.
ibodi
1
Jeśli masz serwer bezgłowy w systemie Linux, nie ma takiej opcji.
Klaus Nji
5

wget urllub curl url gdzie url to adres URL serwera tomcat, który powinien być dostępny, na przykład: wget http://localhost:8080. Następnie sprawdź kod zakończenia, jeśli jest 0 - tomcat działa.

Dikla
źródło
4

Utwórz skrypt powłoki, który sprawdza, czy tomcat działa, czy nie działa, i ustaw crona dla sh, aby sprawdzał co kilka minut, i automatycznie uruchom tomcat, jeśli jest wyłączony. Przykładowy fragment kodu poniżej

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
źródło
Stworzyłem skrypt powłoki, który zawsze zwraca „TOMCAT RUNNING”, nawet jeśli zatrzymałem tomcat. Ale kiedy uruchomiłem polecenie na konsoli, działało dobrze.
Charles PHAM
Upewnij się, że nazwa skryptu powłoki nie jest słowem kluczowym tomcat. Jeśli skrypt ma nazwę tomcat, to na liście procesów nazwa skryptu powłoki pojawi się, kod będzie wyglądał tak, jakby działał tomcat. Możesz nadać skryptowi dowolną nazwę bez słowa kluczowego tomcat
Devendra Dora
3

Uważam, że Tomcat jest dość wybredny, ponieważ działający proces lub otwarty port niekoniecznie oznacza, że ​​faktycznie obsługuje żądania. Zwykle próbuję pobrać znaną stronę i porównać jej zawartość z wcześniej obliczoną wartością oczekiwaną.

Alex Howansky
źródło
3

zawsze to robię

tail -f logs/catalina.out

Kiedy tam zobaczę

INFO: Server startup in 77037 ms

wtedy wiem, że serwer działa.

konkit
źródło
2

Czy próbujesz skonfigurować system alertów? Aby uzyskać proste „pulsowanie”, wyślij żądanie HTTP do portu Tomcat.

Aby uzyskać bardziej szczegółowe monitorowanie, możesz skonfigurować JMX i / lub SNMP, aby wyświetlać statystyki maszyny JVM. Uruchamiamy Nagios z wtyczką SNMP (mosty do JMX), aby sprawdzić użycie pamięci Tomcat i zażądać rozmiaru puli wątków co 10-15 minut.

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

Aktualizacja (2012):

Zaktualizowaliśmy nasze systemy, aby używały „monit” do sprawdzania procesu tomcat. Naprawdę to lubie. Przy bardzo małej konfiguracji automatycznie sprawdza, czy usługa jest uruchomiona, i automatycznie uruchamia się ponownie, jeśli nie jest. (wysyłanie powiadomienia e-mail). Może integrować się ze skryptami /etc/init.d lub sprawdzać po nazwie procesu.

Will Glass
źródło
1

Ponieważ moje instancje tomcat są nazywane tomcat_. Na przykład. tomcat_8086, używam

#

ps aux | grep tomcat

Inną metodą jest użycie narzędzia nc

nc -l 8086 (numer portu )

Lub

ps aux | grep java

Himanshu Chauhan
źródło
1

Spróbuj tego polecenia

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

Zwróci pid, jeśli Tomcat jest uruchomiony.

Alin
źródło
0
$ sudo netstat -lpn |grep :8080

Aby sprawdzić numer portu

$ ps -aef|grep tomcat

Czy na serwerze działa jakiś kocur.

tsssinfotech-K53U infotech # ps -aef|grep tomcat

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

Batchu Bhargava
źródło
0

Zasadniczo chcesz przetestować

  1. Łączność z instancją Tomcat
  2. Zbierz podstawowe statystyki
  3. Czy proces unixowy jest uruchomiony

Ocenię pierwsze 2 opcje, ponieważ trzecia została już wystarczająco dobrze odebrana.

Najprościej jest po prostu stworzyć stronę internetową w swojej aplikacji internetowej, która zbiera podstawowe wskaźniki i mieć klienta, który może odczytać wyniki lub wykryć problemy z łącznością.

Aby to zrobić, masz kilka problemów

YoYo
źródło
0

Oto moje dwa centy.

Mam wiele instancji Tomcat działających na różnych portach dla mojej konfiguracji klastra. Używam następującego polecenia, aby sprawdzić każdy proces działający na różnych portach.

/sbin/fuser 8080/tcp

Zmień numer portu zgodnie z potrzebami.

Aby zabić proces, użyj -kpowyższego polecenia.

  • Jest to znacznie szybsze niż ps -efsposób lub jakiekolwiek inne polecenia, w których wywołujesz polecenie i wywołujesz inne grep.
  • Działa dobrze z wieloma instalacjami tomcat lub dowolnym innym serwerem, który używa portu, w rzeczywistości działa na tym samym serwerze.

Równoważne polecenie w BSDsystemach operacyjnych tofstat

Raja Anbazhagan
źródło
0

tomcat.sh pomaga ci to łatwo poznać.

Dokument użycia tomcat.sh mówi:

brak argumentu: wyświetl identyfikator procesu tomcata, jeśli jest uruchomiony, w przeciwnym razie nic nie rób

Więc uruchom polecenie w wierszu polecenia i sprawdź pid:

$ tomcat.sh

Techflash
źródło