[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re[2]: [shell-script] Status dos servicos
From: |
Viktor Mota |
Subject: |
Re[2]: [shell-script] Status dos servicos |
Date: |
Sun, 13 May 2007 23:28:46 -0300 |
Olá Edson Marquezani Filho,
Em sábado, 12 de maio de 2007, 18:55:55, você escreveu:
Muito obrigado pela ajuda, seguindo os pensamentos, fiz o seguinte
--------------------------------------------------------------------------
#!/bin/bash
# Script: religa.sh
# Data: 13/05/07
# Ultima modificacao: 13/05/07
#
# Objetivo:
# Testar os daemons para ver se estao rodando, caso negativo liga-os!
# Limpar a tela
clear
# Definindo variaveis
#raiz=/etc/rc.d/init.d
# Definando o laço para a variavel servicos (squid, syslogd, etc)
for servicos in squid syslogd pppoe mysqld named httpd crond sshd qmaild
do
/sbin/pidof $servicos > /dev/null
if [ $? -eq 0 ]
then
echo "Programa rodando" $servicos
else
tput bold
echo "Programa não está rodando" $servicos
echo "-----> Tentando levantar o serviço"
tput sgr0
service $servico start
fi
done
#echo Pegando o IP do VELOX
#IF0="ppp0"
#IP_IS=`ifconfig $IF0 | grep inet | cut -d : -f 2 | cut -d \ -f 2`
#echo O IP eh $IP_IS
#IFO=""
exit 0
--------------------------------------------------------------------------
Ainda nao consegui startar o servico de dentro do religa.sh, haja
visto que no laco "for" os nomes informados nao necessariamente
condizem com os arquivos no /etc/rc.d/init.d
Exemplo:
Parei propositalmente o MySql, so que nao consigo startar o bendito
pois no "for" ele se chama "mysqld" e no /etc/rc.d/init.d/ chama-se
apenas "mysql" sem o "D"!
Aceito outras sugestões de todo o grupo, e sintam-se a vontade para
melhorar e/ou criticar o script acima!
>Eu sou bem fraquinho de bash-script, mas a primeira coisa que me vem
>à cabeça é usar o comando pidof pra ver se o daemon em questão tá
>rodando.
>Tente, no shell:
># pidof programa > /dev/null && echo "Programa rodando" || echo
>"Programa não está rodando"
>
>Se o processo existir vai jogar "Programa rodando" na tela ou
>"Programa não está rodando" se não estiver.
>O redirecionamento pra /dev/null é só pra não jogar o PID do programa na tela.
>
> Uma maneira melhor de você poder tratar a ação a ser executada de
> acordo com o estado do programa, é usando a variável $?, que guarda o
> código de retorno do último comando executado.
> A grande maioria dos programas de Unix retornam 0 (zero) como código
> de sucesso, e 1 em caso contrário.
>
> Por exemplo, num script:
>
> #!/bin/bash
>
> pidof programa >> /dev/null
> if [ $? -eq 0 ]; then
> echo "Programa rodando"
> else
> echo "Programa não está rodando"
> fi
>
> Se quiser saber o PID do processo é só atribuir o comando a uma
> variável, assim:
>
> PID=`pidof programa`
>
> A partir disso você pode escolher o que fazer quando um programa que
> deveria estar rodando, não está e tal. Fica a seu gosto.
>
> Inclusive se você for verificar vários deles, como citado, seria
> mais inteligente fazer uma lista e ir varrendo com um laço FOR cada um
> deles, e iniciando os que estivessem parados e tal, se essa for sua
> intenção.
--
Sds,
Viktor Mota
address@hidden
"Se um homem tiver realmente muita fé, pode dar-se ao luxo de ser cético."
[Friedrich Nietzsche]