O Tomcat está funcionando?

109

Interessado em saber como as pessoas costumam verificar se o Tomcat está rodando em um ambiente Unix.

Eu verifico se o processo está sendo executado usando

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

ou eu verifico se o número da porta está ativo

netstat -a | grep 8080

existe uma maneira melhor de verificar se o Tomcat está em execução? O que foi dito acima parece ser uma maneira 'hacky' de verificar se o Tomcat está em execução.

ziggy
fonte

Respostas:

57

Por que grep ps, quando o pid foi gravado no $CATALINA_PIDarquivo?

Eu tenho um cronscript de verificação que envia um e-mail quando o Tomcat está fora do ar:

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

Eu acho que você também pode usar wgetpara verificar a saúde do seu gato. Se você tiver uma página de diagnóstico com carregamento do usuário, etc., poderá buscá-la periodicamente e analisá-la para determinar se algo está errado.

dogbane
fonte
isso é tão fácil de fazer com o Windows? Eu apenas modificaria os comandos para equivalentes do Windows, jogaria em um arquivo em lote e, em seguida, agendaria por meio do agendador?
liltitus27
Você poderia fazer algo parecido com tasklist |find /I "Tomcat" || echo "Tomcat not running"em um arquivo bat, mas pode precisar encontrar java, não Tomcat, dependendo de qual é o nome do processo.
GL2014
1
Para saber qual é o valor de $ CATALINA_PID do Tomcat instalado no SO, tente: ps aewwx | grep CATALINA_PID e você o encontrará na saída do processo em execução, entre as outras variáveis ​​de ambiente. No Debian 8, este valor é: CATALINA_PID = / var / run / tomcat8.pid
Professor Falken
2
É importante observar que pode não existir um arquivo pid, isso depende do ambiente e de como o tomcat foi iniciado. Veja esta resposta para criar um arquivo pid na inicialização.
Alberto de Paola
92

No meu sistema Linux, eu inicio o Tomcat com o script startup.sh. Para saber se ele está funcionando ou não, eu uso

ps -ef | grep tomcat  

Se o resultado da saída contiver todo o caminho para minha pasta tomcat, ele está sendo executado

Thai Tran
fonte
68

tente fazer isso e porque precisa de privilégios de root, use sudo

sudo service tomcat7 status
Kemboi
fonte
17
E se o Tomcat não for um serviço? Em vez disso, um pacote.
emeraldhieu
1
@ Emerald214, nesse caso, você receberá umtomcat7: unrecognized service
Yar
@Yar, depende da sua versão do tomcat
tmh
14

netstat -lnp | grep 8080provavelmente seria a melhor maneira, se você conhece a porta de escuta do Tomcat. Se você quiser ter certeza de que está funcionando, terá que estabelecer uma conexão e enviar uma solicitação HTTP e obter uma resposta. Você pode fazer isso programaticamente ou usando qualquer navegador da web.

Michael Goldshteyn
fonte
SE você conhece a porta, acho que esta é a maneira mais simples, já que existem variações em como você verifica se o executável está rodando dependendo de como você instalou o Tomcat, se é um serviço ou não etc.
Jaffer
9

Você pode verificar o status do tomcat das seguintes maneiras:

ps -ef | grep tomcat  

Isso retornará o caminho do tomcat se o tomcat estiver em execução

netstat -a | grep 8080

onde 8080 é a porta do tomcat

Dhanish Jose
fonte
7

Se o tomcat estiver instalado localmente, digite o seguinte url em uma janela do navegador: {localhost: 8080}

Isso exibirá a página inicial do Tomcat com a seguinte mensagem.

Se estiver vendo isso, você instalou o Tomcat com êxito. Parabéns!

Se o tomcat estiver instalado em um servidor separado, você pode digitar replace localhost por um nome de host válido ou Iess onde o tomcat está instalado.

O acima se aplica a uma instalação padrão em que o tomcat usa a porta padrão 8080

Lokanath
fonte
19
Se o Tomcat estiver instalado em um servidor separado, não conseguir acessá-lo de um navegador não dirá com certeza se ele está em execução ou não: pode ser inacessível.
Marco Lackovic,
Instalei o Tomcat8 no Ubuntu, mas ir para localhost: 8080 resulta na mensagem "Não foi possível conectar".
ibodi
1
Se você tiver um servidor headless no Linux, isso não é uma opção.
Klaus Nji
5

wget urlou curl url onde url é um URL do servidor tomcat que devem estar disponíveis, por exemplo: wget http://localhost:8080. Em seguida, verifique o código de saída, se for 0 - o tomcat está ativo.

Dikla
fonte
4

Crie um script Shell que verifica se o tomcat está ativo ou inativo e defina um cron para sh para fazê-lo verificar a cada poucos minutos e iniciar automaticamente o tomcat se estiver inativo. Snippet de código de amostra abaixo

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
fonte
Eu criei um script de shell que sempre retorna "TOMCAT RUNNING" mesmo que eu tenha parado o tomcat. Mas quando eu executo o comando no console, ele funciona bem.
Charles PHAM
Certifique-se de que o nome do shell script não corresponda à palavra-chave do tomcat. Se o script tiver o nome do tomcat, então na lista de processos o nome do shell script aparecerá, o código pensará como se o tomcat estivesse em execução. Você pode dar qualquer nome ao script sem a palavra-chave tomcat nele
Devendra Dora
3

Eu descobri que o Tomcat é bastante meticuloso no sentido de que um processo em execução ou uma porta aberta não significa necessariamente que ele está lidando com solicitações. Normalmente tento pegar uma página conhecida e comparar seu conteúdo com um valor esperado pré-calculado.

Alex Howansky
fonte
3

eu sempre faço

tail -f logs/catalina.out

Quando eu vejo lá

INFO: Server startup in 77037 ms

então eu sei que o servidor está funcionando.

Konkit
fonte
2

Você está tentando configurar um sistema de alerta? Para uma "pulsação" simples, faça uma solicitação HTTP para a porta Tomcat.

Para um monitoramento mais elaborado, você pode configurar JMX e / ou SNMP para visualizar as estatísticas de JVM. Executamos o Nagios com o plugin SNMP (pontes para JMX) para verificar o uso de memória do Tomcat e solicitar o tamanho do pool de threads a cada 10-15 minutos.

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

Atualização (2012):

Atualizamos nossos sistemas para usar "monit" para verificar o processo do tomcat. Eu realmente gosto. Com muito pouca configuração, verifica automaticamente se o serviço está em execução e reinicia automaticamente se não estiver. (enviando um alerta por email). Ele pode se integrar com os scripts /etc/init.d ou verificar por nome de processo.

Will Glass
fonte
1

Já que minhas instâncias de tomcat são nomeadas como tomcat_. Por exemplo. tomcat_8086, eu uso

#

ps aux | grep tomcat

Outro método é usar o utilitário nc

nc -l 8086 (número da porta )

Ou

ps aux | grep java

Himanshu Chauhan
fonte
1

Tente este comando

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

Ele retornará o pid se o tomcat estiver em execução.

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

Para verificar o número da porta

$ ps -aef|grep tomcat

Algum tomcat está rodando no servidor.

tsssinfotech-K53U infotech # ps -aef|grep tomcat

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

Batchu Bhargava
fonte
0

Basicamente, você deseja testar

  1. Conectividade com sua instância do Tomcat
  2. Reúna algumas estatísticas básicas
  3. Se o processo unix está em execução

Vou avaliar as 2 primeiras opções, pois a 3ª já foi suficientemente respondida.

mais fácil é desenvolver uma página da web em seu WebApp que reúna algumas métricas básicas e ter um cliente que possa ler os resultados ou detectar problemas de conectividade.

Para fazer isso, você tem vários problemas

YoYo
fonte
0

Aqui estão meus dois centavos.

Tenho várias instâncias do tomcat em execução em portas diferentes para a configuração do meu cluster. Eu uso o seguinte comando para verificar cada processo em execução em portas diferentes.

/sbin/fuser 8080/tcp

Substitua o número da porta conforme sua necessidade.

E para matar o processo use -ko comando acima.

  • Isso é muito mais rápido do que a ps -efmaneira ou qualquer outro comando onde você chama um comando e chama outro greppor cima dele.
  • Funciona bem com várias instalações de tomcat, Ou qualquer outro servidor que use uma porta por sinal rodando no mesmo servidor.

O comando equivalente em BSDsistemas operacionais éfstat

Raja Anbazhagan
fonte
0

tomcat.sh ajuda você a saber isso facilmente.

O documento de uso de tomcat.sh diz:

sem argumento: exibe o id do processo do tomcat, se estiver em execução, caso contrário, não faça nada

Portanto, execute o comando em seu prompt de comando e verifique se há pid:

$ tomcat.sh

Techflash
fonte