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