[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RES: [shell-script] RE: Ajuda em Bash
From: |
Julio Cezar Neves - DISB.O |
Subject: |
RES: [shell-script] RE: Ajuda em Bash |
Date: |
Tue, 7 Nov 2000 11:17:55 -0300 |
>so que preciso desses scripts rodando sem parar entao estou tentando fazer
um script em bash e
> deixa-lo no cron para verificar se o servido esta rodando ou nao...
> #!/bin/bash
> for ((i=1; i<9; i++))
> do
> x=`ps -ef | grep file-$i | grep -v grep | wc -l`;
> if ($x eq 0) then
> #inicia o servico fi done;
>o meu problema esta no if alguem pode me ajudar ???
>obs sou iniciante ok???
Olá, Junior.
Você poderia tentar um script assim:
======================Picote Aqui========================
#!/bin/bash
i=1
while [ $i -ne 9 ] ; do
if [ `ps -ef | grep "file-$i" | grep -v "grep" | wc -l` -eq 0 ] ; then
# Inicia o servico. *_por exemplo_*:
/usr/local/bin/file-$i.pl
fi
i=`expr $i + 1`
done
======================Picote Aqui========================
Olá André e Junior,
O programa acima está muito claro e bem estruturado, porém tenho um
comentário a fazer:
A instrução if em shell tem por objetivo testar a execução de outros
comandos. Diferentemente das outras linguagens, o "nosso" if não testa
condição (note que o par de colchetes do if corresponde à instrução test).
Portanto para otimizar o uso do if eu escreveria a linha correspondente da
seguinte forma:
if ps -ef | grep file-$i | grep -v grep ; then
=========================================================
Não sei como os programas em Perl estão escritos; não seria mais fácil criar
um loop infinito
dentro do próprio script file-?.pl, que então ficaria rodando sem parar.
Você poderia colocá-lo
para rodar em background (file-?.pl &), e quando quisesse terminá-lo,
bastaria dar um kill -9 no
PID do processo (por exemplo, "kill -9 `pidof file-1.pl`")? É apenas uma
sugestão, que acho que
poderia ser considerada, pois aí não haveria a necessidade de se rodar o
processo no cron.
Como já disse, não sei como cada um destes scripts .pl foram escritos.
Outra observação: a notação que você utilizou { for ((i=1; i<9; i++)) },
entre outras, *se não me engano*,
é para o C-Shell (/bin/csh). O Bourne Shell (/bin/sh) e o Bourne Again Shell
(/bin/bash) utilizam
uma notação diferente. Posso estar enganado, pois utilizo apenas o bash (em
casa) e o sh (em
um servidor HP-UX).
Espero que tenha ajudado.
Andre Luis Arantes Monteiro
Programador
(12) 565-9551 (res)
(12) 528-4240 (com)
Inscrição: address@hidden
Sair da lista: address@hidden
Banco Dados: http://www.egroups.com/group/shell-script
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- RES: [shell-script] RE: Ajuda em Bash,
Julio Cezar Neves - DISB.O <=