Há algumas vezes em que um processo de segundo plano que você confia silenciosamente falha, o que é difícil de detectar e corrigir. MythTV, por exemplo, depende de um servidor em segundo plano para gravar programas de televisão. Se o servidor falhar as gravações serão perdidas. Certo, então em primeiro lugar ele nunca deveria falhar, mas enquanto os desevolvedores se ocupam em corrigir os erros na aplicação, tudo o que podemos fazer é reiniciar o processo automaticamente.
O truqye é executar um processo que você quer reiniciar a partir de um script simples. Se ele falhar, o controle retorna ao script, que pode iniciá-lo novamente. Isto pode ser feito por um laço. Não é grande programação, mas funciona.
while true; do mythbackend; done
A beleza disso é que, quando mythbackend falha, o laço while simplesmente inicia-lo-á novamente. Podemos fazer o script um pouco menos cru adicionando a verificação se mythbackend está em execução. Precisamos apenas contar o número de instâncias dos processos, o que fazemos pelo grep
no retorno no número de instâncias do processo encontrados com ps
. Se o mythbackend está mesmo em execução, o número de instâncias será um valor diferente de zero, o que testaremos através de um if
.
Finalmente, com o script escrito, precisamos ter certeza de que ele não encerrará a si mesmo. Fazemos isso executando-o a partir de um shell com o comando hangup
, nohup scriptname &
.
#!/bin/bash mcount = 'ps ax | grep "mythbackend" | grep -v grep | wc -l' if [$mcount == 0]; then #! Insert 'while true' code here else exit 1 fi
Mais em Truques de linha de comando.
Uma resposta em “Simples teste de falha”
[…] Simples teste de falha […]