¿Tomcat se está ejecutando?

109

Interesado en saber cómo la gente suele comprobar si Tomcat se está ejecutando en un entorno Unix.

Verifico que el proceso se esté ejecutando usando

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

o verifico que el número de puerto esté activo

netstat -a | grep 8080

¿Existe una forma mejor de comprobar que Tomcat se está ejecutando? Lo anterior parece ser una forma 'pirata' de comprobar que Tomcat se está ejecutando.

ziggy
fuente

Respuestas:

57

¿Por qué grep ps, cuando el pid se ha escrito en el $CATALINA_PIDarchivo?

Tengo un cronscript 'd checker que envía un correo electrónico cuando Tomcat está inactivo:

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

Supongo que también podrías utilizar wgetpara comprobar la salud de tu gato. Si tiene una página de diagnóstico con carga de usuario, etc., puede buscarla periódicamente y analizarla para determinar si algo va mal.

dogbane
fuente
¿Es esto tan fácil de hacer con Windows? ¿Simplemente modificaría los comandos para los equivalentes de Windows, lo colocaría en un archivo por lotes y luego lo programaría a través del programador?
liltitus27
Puede hacer algo como tasklist |find /I "Tomcat" || echo "Tomcat not running"en un archivo bat, pero es posible que necesite buscar java, no Tomcat, dependiendo del nombre del proceso.
GL2014
1
Para saber cuál es el valor de $ CATALINA_PID de su Tomcat instalado en el sistema operativo, pruebe: ps aewwx | grep CATALINA_PID y lo encontrará en la salida del proceso en ejecución, entre las otras variables de entorno. En Debian 8 este valor es: CATALINA_PID = / var / run / tomcat8.pid
Professor Falken
2
Es importante tener en cuenta que es posible que no exista un archivo pid, depende del entorno y de cómo se inició Tomcat. Vea esta respuesta para crear un archivo pid al inicio.
Alberto de Paola
92

En mi sistema Linux, inicio Tomcat con el script startup.sh. Para saber si está funcionando o no, utilizo

ps -ef | grep tomcat  

Si el resultado de salida contiene la ruta completa a mi carpeta tomcat, entonces se está ejecutando

Tran tailandés
fuente
68

intente esto en su lugar y como necesita privilegios de root use sudo

sudo service tomcat7 status
Kemboi
fuente
17
¿Qué pasa si Tomcat no es un servicio? En cambio, un paquete.
emeraldhieu
1
@ Emerald214 en ese caso obtendrá untomcat7: unrecognized service
Yar
@ Año, depende de su versión de tomcat
tmh
14

netstat -lnp | grep 8080probablemente sería la mejor manera, si conoce el puerto de escucha de Tomcat. Si quiere estar seguro de que es funcional, deberá establecer una conexión y enviar una solicitud HTTP y obtener una respuesta. Puede hacerlo mediante programación o con cualquier navegador web.

Michael Goldshteyn
fuente
SI conoce el puerto, creo que esta es la forma más sencilla dado que existen variaciones en la forma de verificar si el ejecutable se está ejecutando dependiendo de cómo haya instalado Tomcat, si es un servicio o no, etc.
Jaffer
9

Puede comprobar el estado de Tomcat de las siguientes formas:

ps -ef | grep tomcat  

Esto devolverá la ruta de tomcat si el tomcat se está ejecutando

netstat -a | grep 8080

donde 8080 es el puerto de tomcat

Dhanish José
fuente
7

Si Tomcat está instalado localmente, escriba la siguiente URL en una ventana del navegador: {localhost: 8080}

Esto mostrará la página de inicio de Tomcat con el siguiente mensaje.

Si está viendo esto, ha instalado correctamente Tomcat. ¡Felicidades!

Si Tomcat está instalado en un servidor separado, puede escribir reemplazar localhost por un nombre de host válido o Iess donde está instalado Tomcat.

Lo anterior se aplica a una instalación estándar en la que tomcat usa el puerto predeterminado 8080

Lokanath
fuente
19
Si Tomcat está instalado en un servidor separado, no poder acceder a él desde un navegador no le dirá con seguridad si se está ejecutando o no: es posible que no se pueda acceder a él.
Marco Lackovic
He instalado Tomcat8 en Ubuntu, pero al ir a localhost: 8080 aparece el mensaje "No se puede conectar".
ibodi
1
Si tiene un servidor sin cabeza en Linux, esta no es una opción.
Klaus Nji
5

wget urlo curl url donde URL es una dirección URL del servidor Tomcat que debe estar disponible, por ejemplo: wget http://localhost:8080. Luego verifique el código de salida, si es 0, tomcat está activo.

Dikla
fuente
4

Cree un script de Shell que verifique si tomcat está activo o inactivo y configure un cron para sh para que lo verifique cada pocos minutos, e inicie automáticamente Tomcat si está inactivo. Fragmento de código de muestra a continuación

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
fuente
Creé un script de shell que siempre devuelve "TOMCAT RUNNING" incluso yo detuve a Tomcat. Pero cuando ejecuto el comando en la consola, funcionó bien.
Charles PHAM
Asegúrese de que el nombre del script de shell no sea la palabra clave de tomcat. Si el script tiene un nombre de tomcat, en la lista de procesos aparecerá el nombre del script de shell, el código pensaría como si tomcat se estuviera ejecutando. Puede dar cualquier nombre al script sin la palabra clave tomcat en él
Devendra Dora
3

Descubrí que Tomcat es bastante quisquilloso en el sentido de que un proceso en ejecución o un puerto abierto no significa necesariamente que esté manejando solicitudes. Por lo general, trato de tomar una página conocida y comparar su contenido con un valor esperado precalculado.

Alex Howansky
fuente
3

Siempre hago

tail -f logs/catalina.out

Cuando veo allí

INFO: Server startup in 77037 ms

entonces sé que el servidor está activo.

konkit
fuente
2

¿Estás intentando configurar un sistema de alerta? Para un simple "latido", haga una solicitud HTTP al puerto Tomcat.

Para un monitoreo más elaborado, puede configurar JMX y / o SNMP para ver las estadísticas de JVM. Ejecutamos Nagios con el complemento SNMP (puentes a JMX) para verificar el uso de la memoria de Tomcat y solicitar el tamaño del grupo de subprocesos cada 10-15 minutos.

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

Actualización (2012):

Hemos actualizado nuestros sistemas para que utilicen "monit" para comprobar el proceso de Tomcat. Me gusta mucho. Con muy poca configuración, verifica automáticamente que el servicio se esté ejecutando y se reinicia automáticamente si no lo está. (enviando una alerta por correo electrónico). Puede integrarse con los scripts /etc/init.d o verificar por nombre de proceso.

Will Glass
fuente
1

Dado que mis instancias de tomcat se denominan tomcat_. Por ejemplo. tomcat_8086, yo uso

#

ps aux | grep tomcat

Otro método es utilizar la utilidad nc

nc -l 8086 (número de puerto )

O

ps aux | grep java

Himanshu Chauhan
fuente
1

Prueba este comando

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

Devolverá el pid si Tomcat se está ejecutando.

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

Para comprobar el número de puerto

$ ps -aef|grep tomcat

¿Hay algún tomcat que se esté ejecutando en el servidor?

tsssinfotech-K53U infotech # ps -aef|grep tomcat

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

Batchu Bhargava
fuente
0

Básicamente quieres probar

  1. Conectividad a su instancia de tomcat
  2. Reúna algunas estadísticas básicas
  3. Si el proceso de Unix se está ejecutando

Evaluaré las primeras 2 opciones ya que la tercera ya ha sido suficientemente respondida.

Lo más fácil es simplemente desarrollar una página web en su aplicación web que reúna algunas métricas básicas y tener un cliente que pueda leer los resultados o detectar problemas de conectividad.

Para hacerlo, tiene varios problemas

Yoyó
fuente
0

Aquí están mis dos centavos.

Tengo varias instancias de tomcat ejecutándose en diferentes puertos para la configuración de mi clúster. Utilizo el siguiente comando para verificar cada proceso que se ejecuta en diferentes puertos.

/sbin/fuser 8080/tcp

Reemplace el número de puerto según sus necesidades.

Y para matar el uso del proceso -ken el comando anterior.

  • Esto es mucho más rápido que la ps -efforma o cualquier otro comando en el que llame a un comando y llame a otro grepencima.
  • Funciona bien con múltiples instalaciones de tomcat, o cualquier otro servidor que utilice un puerto de hecho ejecutándose en el mismo servidor.

El comando equivalente en BSDlos sistemas operativos esfstat

Raja Anbazhagan
fuente
0

tomcat.sh te ayuda a saber esto fácilmente.

El documento de uso de tomcat.sh dice:

sin argumento: muestra el ID de proceso del tomcat, si se está ejecutando, de lo contrario no hagas nada

Entonces, ejecute el comando en su símbolo del sistema y verifique si hay pid:

$ tomcat.sh

Techflash
fuente