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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Qual a melhor forma de manter um script rodando 24x7x


From: MrBiTs
Subject: Re: [shell-script] Qual a melhor forma de manter um script rodando 24x7x365?
Date: Mon, 14 Nov 2011 16:25:16 -0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:7.0.1) Gecko/20110929 Thunderbird/7.0.1

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

On 11/14/2011 03:44 PM, Kurt Kraut wrote:
> Olá,
> 
> 
> Já ultrapassei a barreira dos 30 scripts em 1 ano de empresa aqui. Tudo 
> graças a esta lista e aos livros do Júlio Neves e
> Aurélio Jargas. Eu costumo chamar de 'meus macaquinhos adestrados', pois 
> automatizam procedimentos e truques que antes da minha
> entrada na empresa, eram feito manualmente.
> 
> Meus scripts estão ficando bem complexos e cruciais para o funcionamento de 
> sistema. Mais recentemente fiz uma safra deles que
> fica parseando em tempo real os logs (ex.: do Apache) através do AWK e 
> dispara comandos e reações de acordo com expressões
> regulares. Meu novo problema é: Qual a melhor forma de manter um script 
> rodando 24x7x365?
> 
> Já me indicaram o monit para isso, mas ao ler a documentação achei mais 
> adequado para gerir daemons, não scripts. O que preciso
> é:
> 
> *1)* Impedir que o mesmo script rode duas vezes ao mesmo tempo. *2)* Detectar 
> de X em X minutos se o script em questão está
> rodando e se não estiver, rodá-lo. Se estiver, ignorar.
> 
> O que pensei foi numa espécie de controller.sh e este eu chamaria na crontab 
> a cada minuto. Ele checaria em $(ps aux | fgrep
> nomedoscript.sh) se ele estiver rodando. Se essa variável estiver vazia, 
> rodar o script. Se não, encerrar sem tomar nenhuma
> ação.
> 
> É esse o modelo ideal ou sugerem algum outro?

Esse é um modelo. Imagino que seu script tenha um while true para executar a 
ação constantemente. O script vira quase um daemon e,
nesse caso, o monit seria sim uma saída. O lance é escrever um arquivo de 
controle, tipo script.pid, que contém exatamente o PID
do seu script. Você pode rodá-lo com nohup também, ue já é uma garantia a mais 
de que ele continue executando-se.

O arquivo com o PID do script também serve para evitar que ele rode novamente. 
Você testa sua existência e verifica se o processo
já está rodando. Se não estiver, remove o arquivo e sobe o script normalmente, 
criando outro.

O controller.sh pode ser o próprio script, que seria chamado a cada X tempo na 
cron, seguindo a lógica acima.



- -- 

LLAP

.0. MrBiTs - address@hidden
..0 GnuPG  - 
http://keyserver.fug.com.br:11371/pks/lookup?op=get&search=0x6EC818FC2B3CA5AB
000 http://www.mrbits.com.br


-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)

iQEcBAEBCAAGBQJOwV0IAAoJEG7IGPwrPKWrc7MH/2nhoYJp8AOrujS7quGKV4V0
evr1+hISTN/7+IDvIlNEkUcqhgK7thGNf0G3YeMG8u1bS4jJnTModOub4lKSbcFk
yT0zMhrrYSxelWQuma6Tv63mbxee9gY00Fv8PW7AY/wVT09zYvqO79lsWmydOTPZ
Nay6CYotY2CklY3onmtz40+N4Fo55pJzOluI+iFsetf9986EhecGDdNvtebLgEAt
6xmt1vIRBthc/fP3nir7Bt2fRs25RqnUSVYhr/6RRv1k9htAQ01VYHishYAe3XuO
x/OoZj28vsvhR1vCV/0GbYnaBjOiYmKJkVU5qbD530ZFUNFcnKfHWxZh/NoCjxc=
=BqHO
-----END PGP SIGNATURE-----


reply via email to

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