script shell para verificar servicços [RESOLVIDO]

1. script shell para verificar servicços [RESOLVIDO]

Nuno
nmdmoreira

(usa Outra)

Enviado em 10/02/2012 - 08:13h

boas... estou à pouco tempo com linux e tenho uma questão para a qual gostaria de pedir ajuda.

fiz um script muito básico que arranca no /etc/rc.local [ubuntu]

o script é basicamente o seguinte:

#!/bin/sh

SERVICE="service1";


if ps ax | grep -v grep | grep $SERVICE > /dev/null
then
echo "$SERVICE service running, ok " >> /var/mail/mail | date >> /var/mail/mail
else
echo "$SERVICE is not running!" >> /var/mail/mail | mail -s "$SERVICE em baixo" root | /sbin/shutdown -r now | date >> /var/mail/mail

fi
exit 0

basicamente verifica se o servico1 está a funcionar e caso não esteja faz um reboot à máquina

acontece que eu queria fazer o mesmo para mais serviços, p.ex

service1 -> ver se service1 está a funcionar e se não estiver faz reboot
service2 -> ver se service2 está a funcionar e se não estiver faz... (qq coisa) etc...
service3 -> ver se service3 está a funcionar e se não estiver arrancar o serviço manualmente...

alguém me pode dar umas dicas?

obrigado








  


2. Re: script shell para verificar servicços [RESOLVIDO]

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 10/02/2012 - 10:15h

Primeiro, pq você não reinicia o serviço ao invés do servidor todo?


para vários serviços vc poderia usar:


#!/bin/sh

SERVICOS="service1 service2 service3";

for SERVICE in $SERVICOS
do
if ps ax | grep -v grep | grep $SERVICE > /dev/null
then
echo "$SERVICE service running, ok " >> /var/mail/mail | date >> /var/mail/mail
else
echo "$SERVICE is not running!" >> /var/mail/mail | mail -s "$SERVICE em baixo" root | /sbin/shutdown -r now | date >> /var/mail/mail

fi
done
exit 0




3. Re: script shell para verificar servicços [RESOLVIDO]

Nuno
nmdmoreira

(usa Outra)

Enviado em 10/02/2012 - 17:24h

rai3mb escreveu:

Primeiro, pq você não reinicia o serviço ao invés do servidor todo?


para vários serviços vc poderia usar:


#!/bin/sh

SERVICOS="service1 service2 service3";

for SERVICE in $SERVICOS
do
if ps ax | grep -v grep | grep $SERVICE > /dev/null
then
echo "$SERVICE service running, ok " >> /var/mail/mail | date >> /var/mail/mail
else
echo "$SERVICE is not running!" >> /var/mail/mail | mail -s "$SERVICE em baixo" root | /sbin/shutdown -r now | date >> /var/mail/mail

fi
done
exit 0



Obrigado pela sua resposta...
na realidade estou tentando fazer por partes, pois como disse sou novo no linux.
depois de colocar este script a verificar os diversos serviços, vou evoluir para reiniciar o serviço em vez de reiniciar o servidor.
O meu problema, que terei de resolver, é saber qual a ordem correta pois eu sei que estes serviços (neste caso uma página web e uma base dados) estão relacionados e como tal terei de testar qual a ordem correta para serem reiniciados... se tiver umas dicas para me dar...
Obrigado


4. Re: script shell para verificar servicços [RESOLVIDO]

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 10/02/2012 - 22:12h

Se reiniciar o servidor web primeiro os clientes ficam sem acesso à página momentaneamente
Depois quando vc tiver reiniciando o banco de dados os cliente terão acesso à página mas receberam erros ao executar atividades que precisam da base de dados..

Poderia fazer assim (exemplo):


#para o servidor web
/etc/init.d/apache2 stop
#reinicia a base de dados
/etc/init.d/postgresql restart
#agora inicia o banco de dados
/etc/init.d/apache2 start



Assim vc para o servidor web, os clientes ficam sem acesso momentâneo, mas quando tiverem acesso novamente já será completo.

Agora não é comum ter que ficar reiniciando serviços como esses diversas vezes, avalie o que gera isso e evite fazê-lo durante o horário em que os clientes precisam do serviço ativo.




5. Re: script shell para verificar servicços [RESOLVIDO]

david fonseca
david fonseca

(usa CentOS)

Enviado em 29/01/2016 - 12:46h

Muito bom .. agora teria como testar o serviço em outra estacão ? Ou Seja, remotamente


6. Re: script shell para verificar servicços [RESOLVIDO]

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 02/03/2016 - 21:58h

Da pra fazer usando ssh, aqui em casa uso:

ssh pi@192.168.0.20 "/etc/init.d/apache2 status"







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts