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

[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


reply via email to

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