Você pode verificar o processo usando ps
, mas uma desvantagem é que, se você tiver várias instâncias desse processo em execução ou se o script estiver desativado, esse método poderá ser menos conclusivo.
Eu prefiro realmente verificar se o servidor está escutando na porta. Aqui estão algumas maneiras de fazer isso. Se o seu servidor estiver escutando na porta 2000, por exemplo, considere o seguinte.
Usando lsof
lsof -i :2000; echo $?;
lsof
está verificando se há descritores de arquivos abertos e deve mostrar se um programa está escutando ou se comunicando ativamente nessa porta. Isso irá ecoar um 0
se o servidor estiver aceitando conexões na porta 2000 ou um 1
se não estiver.
Usando nc
nc -z -w1 192.168.1.12 2000 &> /dev/null; echo $?;
Este é o meu método preferido para verificar em um servidor de soquete. Aqui nc
está usando o sinalizador -z
para o modo de E / S zero para varrer rapidamente a porta. Você pode usar seu endereço IP aqui e a porta correta. Se o servidor está aceitando conexões, então a vida é boa.
Novamente, os valores de retorno serão 0
para bom ou 1
para não bons. Estamos descartando qualquer saída aqui porque estamos querendo apenas um cheque booleano rápido. Este método retorna muito rápido se o endereço da rede estiver acessível. Executar a partir do próprio servidor, você não verá quase nenhuma latência, pois está tentando falar consigo mesmo.
Automatizando
Para executar esses testes pelo cron, crie um script bash e execute um ou ambos os comandos e execute uma série de verificações lógicas. Se eles falharem, reinicie seu script e verifique novamente. Eu tenho usado esses métodos há vários anos e tenho tido resultados muito bons de tempo de atividade.