Execute novamente um script de aplicativo quando ele falhar?

15

Eu tenho alguns aplicativos que precisam ser executados no meu laptop o tempo todo.

Eu uso um script bash para iniciar esses aplicativos. No meu script eu tenho um loop parecido com isto:

while true;
do
    xterm
done

Isso executa um aplicativo ( xterm neste caso) e se o aplicativo travar, o loop o inicia novamente.

Isso tem uma desvantagem de não haver saída "limpa" desse loop. Portanto, mesmo que a intenção do usuário seja fechar xterm , o loop começa novamente.

Existe uma maneira para iniciar uma aplicação a partir do script bash, veja se está em execução, para re-executar se o script falhou ou não faz nada se o usuário fechou corretamente?

    
por Dictador 12.01.2015 / 13:23

2 respostas

22

Tente isto:

while true; do xterm && break; done

As aplicações têm códigos de status de saída para que, se algo sair bem, ele retorne zero ... E se algo deu errado, ele lança outro número. Isso permite que as pessoas entrem e descubram o problema exato. Isso é o que a outra resposta está fazendo.

&& apenas verifica se o comando anterior era uma saída com status zero e, se estava, quebra o loop. Se ele falhar, ele descartará algo diferente de 0 e a cláusula && ... não será acionada; ele simplesmente retornará e executará xterm .

    
por Cyrus 12.01.2015 / 13:32
5

Na condição while , você pode testar se o status de saída de xterm foi bem-sucedido ou não com algo assim:

result=1
while [ $result -ne 0 ]; do
    xterm
    result=$?
done
A variável

$? mantém o status de saída do último comando executado.

    
por Leonid V. Fedorenchik 12.01.2015 / 13:37

Tags