Simples teste de falha

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.

Um comentário sobre “Simples teste de falha

Deixe uma resposta

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.