shell-script-pt
[Top][All Lists]
Advanced

[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]



reply via email to

[Prev in Thread] Current Thread [Next in Thread]