Dependendo da distribuição, não precisa desse monte de linhas não ;-) Por exemplo, se for red hat, você pode criar vários scripts simples que checam o status do serviço com o "service status" e colocar na cron para verificar de 30 em 30 segundos. Se der "pau", roda o "service restart".
Simples e funcional. Eu uso red hat e faço assim nas minhas máquinas. Creio que outras distros tenham comandos parecidos. []'s Bruno Gunter ----- Original Message ----- From: Viktor Mota To: Edson Marquezani Filho Sent: Sunday, May 13, 2007 11:28 PM Subject: Re[2]: [shell-script] Status dos servicos 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 [EMAIL PROTECTED] "Se um homem tiver realmente muita fé, pode dar-se ao luxo de ser cético." [Friedrich Nietzsche] [As partes desta mensagem que não continham texto foram removidas]
