Esta resposta aplica-se às versões do Ubuntu com o Upstart (< = 14.10). Use outra abordagem para versões com Systemd (> = 15.04).
Parece que você está procurando uma funcionalidade já fornecida no Ubuntu com Upstart . A sub-rotina respawn
na configuração fará exatamente o que você precisa. Eu recomendaria contra o uso de uma maneira menos padronizada de lidar com isso.
Sem mais detalhes sobre o processo que você está tentando gerenciar, é difícil dizer como deve ser a configuração. Depende se se bifurca e se coloca em segundo plano, por exemplo. A documentação do Upstart na sub-rotina respawn
deve lhe dar mais informações.
Infelizmente, ainda não é possível executar corretamente os Trabalhos do usuário: não é possível obter o início para executar o trabalho do usuário
Exemplo
Vamos supor que queremos manter o aplicativo Calculadora em execução, mesmo quando ele estiver sendo eliminado com fogo (sinal 9).
-
Crie um arquivo de configuração em
/etc/init/calculator.conf
(com base em este artigo ):#!upstart description "Calculator" # Start job via the daemon control script. Replace "gert" with your username. exec su -l gert -c 'export DISPLAY=:0; /usr/bin/gnome-calculator' # Restart the process if it dies with a signal # or exit code not given by the 'normal exit' stanza. respawn # Give up if restart occurs 10 times in 90 seconds. respawn limit 10 90
-
Inicie executando
sudo start calculator
-
Ele abre em sua exibição atual (
:0
) e aproveita a grandiosidade ao vê-lo reiniciar depois de fechá-lo.-
Identifique o ID do processo, por ex. fazendo
ps aux | grep calculator
:gert 13695 0.2 0.4 349744 16460 ? Sl 13:38 0:00 /usr/bin/gnome-calculator
-
Mate-o com fogo.
sudo kill -9 13695
-
Assista a reaparecer:
gert 16059 4.6 0.4 349736 16448 ? Sl 13:40 0:00 /usr/bin/gnome-calculator
-
Observe que isso será mais elegante com os planos para os planos do Ubuntu 13.04 com suporte apropriado ao Job do Usuário.