Tomcat è in esecuzione?


109

Interessato a sapere come le persone di solito controllano se Tomcat è in esecuzione su un ambiente Unix.

O controllo che il processo sia in esecuzione utilizzando

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

oppure controllo che il numero di porta sia attivo

netstat -a | grep 8080

esiste un modo migliore per verificare che Tomcat sia in esecuzione? Quanto sopra sembra essere un modo "hacky" per verificare che Tomcat sia in esecuzione.

Risposte:


57

Perché grep ps, quando il pid è stato scritto nel $CATALINA_PIDfile?

Ho uno cronscript di controllo che invia un'e-mail quando Tomcat è inattivo:

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

Immagino che potresti usare anche wgetper controllare la salute del tuo gatto. Se si dispone di una pagina di diagnostica con carico utente ecc., È possibile recuperarla periodicamente e analizzarla per determinare se qualcosa sta andando storto.


è così facile da fare con Windows? dovrei semplicemente modificare i comandi per gli equivalenti di Windows, lanciarli in un file batch e quindi pianificare tramite lo scheduler?
liltitus27

Si potrebbe fare qualcosa sulla falsariga di tasklist |find /I "Tomcat" || echo "Tomcat not running"in un file bat, ma potrebbe essere necessario trovare java, non Tomcat, a seconda del nome del processo.
GL2014

1
Per sapere qual è il valore di $ CATALINA_PID dal Tomcat installato sul sistema operativo, prova: ps aewwx | grep CATALINA_PID e lo troverai nell'output per il processo in esecuzione, tra le altre variabili d'ambiente. In Debian 8 questo valore è: CATALINA_PID = / var / run / tomcat8.pid
Professor Falken

2
È importante notare che un file pid potrebbe non esistere, dipende dall'ambiente e da come è stato avviato Tomcat. Vedi questa risposta per creare un file pid all'avvio.
Alberto de Paola

92

Sul mio sistema Linux, avvio Tomcat con lo script startup.sh. Per sapere se è in esecuzione o meno, utilizzo

ps -ef | grep tomcat  

Se il risultato dell'output contiene l'intero percorso della mia cartella Tomcat, allora è in esecuzione


68

provalo invece e poiché ha bisogno dei privilegi di root usa sudo

sudo service tomcat7 status

17
E se Tomcat non fosse un servizio? Invece un pacchetto.
emeraldhieu

1
@ Emerald214 in tal caso riceverai untomcat7: unrecognized service
Yar

@Yar, dipende dalla tua versione di Tomcat
tmh

14

netstat -lnp | grep 8080probabilmente sarebbe il modo migliore, se conosci la porta di ascolto di Tomcat. Se vuoi essere certo che sia funzionale, dovrai stabilire una connessione e inviare una richiesta HTTP e ottenere una risposta. Puoi farlo in modo programmatico o utilizzando qualsiasi browser web.


SE conosci il port, penso che questo sia il modo più semplice dato che ci sono variazioni nel modo in cui controlli se l'eseguibile è in esecuzione a seconda di come hai installato Tomcat, che sia un servizio o meno ecc.
Jaffer

9

Puoi controllare lo stato di Tomcat nei seguenti modi:

ps -ef | grep tomcat  

Questo restituirà il percorso Tomcat se Tomcat è in esecuzione

netstat -a | grep 8080

dove 8080 è la porta Tomcat


7

Se Tomcat è installato localmente, digita il seguente URL in una finestra del browser: {localhost: 8080}

Verrà visualizzata la home page di Tomcat con il seguente messaggio.

Se visualizzi questo messaggio, hai installato correttamente Tomcat. Congratulazioni!

Se tomcat è installato su un server separato, puoi digitare sostituire localhost con un nome host valido o Iess dove è installato tomcat.

Quanto sopra si applica a un'installazione standard in cui Tomcat utilizza la porta predefinita 8080


19
Se Tomcat è installato su un server separato, non riuscire ad accedervi da un browser non ti dirà con certezza se è in esecuzione o meno: potrebbe essere irraggiungibile.
Marco Lackovic

Ho installato Tomcat8 su Ubuntu, ma andando su localhost: 8080 risulta nel messaggio "Impossibile connettersi".
ibodi

1
Se hai un server headless su Linux questa non è un'opzione.
Klaus Nji

5

wget urlo curl url in cui URL è un URL del server Tomcat che dovrebbe essere disponibile, ad esempio: wget http://localhost:8080. Quindi controlla il codice di uscita, se è 0 - Tomcat è attivo.


4

Crea uno script Shell che controlla se Tomcat è attivo o inattivo e imposta un cron per sh per farlo controllare ogni pochi minuti e avvia automaticamente Tomcat se inattivo. Snippet di codice di esempio di seguito

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

Ho creato uno script di shell che restituisce sempre "TOMCAT RUNNING" anche se ho fermato Tomcat. Ma quando eseguo il comando su console, ha funzionato bene.
Charles PHAM

Assicurati che il nome dello script della shell non sia la parola chiave tomcat.Se lo script ha il nome tomcat, nell'elenco dei processi verrà visualizzato il nome dello script della shell, il codice penserà come se tomcat fosse in esecuzione. Puoi dare qualsiasi nome allo script senza la parola chiave tomcat in esso
Devendra Dora

3

Ho trovato Tomcat piuttosto schizzinoso in quanto un processo in esecuzione o una porta aperta non significa necessariamente che stia effettivamente gestendo le richieste. Di solito provo a prendere una pagina nota e confrontare i suoi contenuti con un valore previsto precalcolato.


3

lo faccio sempre

tail -f logs/catalina.out

Quando ci vedo

INFO: Server startup in 77037 ms

allora so che il server è attivo.


2

Stai cercando di impostare un sistema di allerta? Per un semplice "heartbeat", eseguire una richiesta HTTP alla porta Tomcat.

Per un monitoraggio più elaborato, è possibile configurare JMX e / o SNMP per visualizzare le statistiche JVM. Eseguiamo Nagios con il plug-in SNMP (bridge a JMX) per controllare l'utilizzo della memoria di Tomcat e richiedere la dimensione del pool di thread ogni 10-15 minuti.

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

Aggiornamento (2012):

Abbiamo aggiornato i nostri sistemi per utilizzare "monit" per controllare il processo di tomcat. Mi piace veramente. Con una configurazione minima, verifica automaticamente che il servizio sia in esecuzione e, in caso contrario, si riavvia automaticamente. (invio di un avviso e-mail). Può integrarsi con gli script /etc/init.d o controllare in base al nome del processo.


1

Poiché le mie istanze di tomcat sono denominate tomcat_. Per esempio. tomcat_8086, io uso

#

ps aux | grep tomcat

Un altro metodo utilizza l'utilità nc

nc -l 8086 (numero di porta )

O

ps aux | grep java


1

Prova questo comando

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

Restituirà il pid se Tomcat è in esecuzione.


0
$ sudo netstat -lpn |grep :8080

Per controllare il numero di porta

$ ps -aef|grep tomcat

C'è un tomcat in esecuzione sul server.

tsssinfotech-K53U infotech # ps -aef|grep tomcat

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


0

Fondamentalmente vuoi provare

  1. Connettività alla tua istanza Tomcat
  2. Raccogli alcune statistiche di base
  3. Se il processo unix è in esecuzione

Valuterò le prime 2 opzioni poiché la terza ha già ricevuto una risposta sufficiente.

il più semplice è semplicemente sviluppare una pagina Web sulla tua WebApp che raccolga alcune metriche di base e avere un client in grado di leggere i risultati o rilevare problemi di connettività.

Per farlo, hai diversi problemi


0

Ecco i miei due centesimi.

Ho più istanze di Tomcat in esecuzione su porte diverse per la mia configurazione del cluster. Uso il seguente comando per controllare ogni processo in esecuzione su porte diverse.

/sbin/fuser 8080/tcp

Sostituisci il numero di porta secondo le tue necessità.

E per terminare l'uso del processo -knel comando precedente.

  • Questo è molto più veloce del ps -efmodo o di qualsiasi altro comando in cui chiami un comando e ne chiami un altrogrep sopra.
  • Funziona bene con più installazioni di Tomcat o qualsiasi altro server che utilizza una porta in esecuzione sullo stesso server.

Il comando equivalente sui BSDsistemi operativi èfstat


0

tomcat.sh ti aiuta a saperlo facilmente.

Il documento sull'utilizzo di tomcat.sh dice:

nessun argomento: mostra l'id del processo del gatto, se è in esecuzione, altrimenti non fare nulla

Quindi, esegui il comando sul prompt dei comandi e verifica la presenza di pid:

$ tomcat.sh

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.