Esta resposta se aplica às versões do Ubuntu com 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 respawn
estrofe na configuração fará exatamente o que você precisa. Eu recomendaria contra o uso de uma maneira menos padrão 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 ele se bifurca e se coloca em segundo plano, por exemplo. A documentação do Upstart na respawn
estrofe deve fornecer mais informações.
Infelizmente, ainda não é possível executar tarefas do usuário corretamente: não é possível iniciar o processo para executar tarefas do usuário
Exemplo
Vamos supor que queremos manter o aplicativo Calculadora em execução, mesmo quando ele está sendo morto com fogo (sinal 9).
Crie um arquivo de configuração em /etc/init/calculator.conf
(com base neste 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 na tela atual ( :0
) e desfruta da grandiosidade vendo-a reiniciar após fechá-la.
Identifique o ID do processo, por exemplo, fazendo ps aux | grep calculator
:
gert 13695 0.2 0.4 349744 16460 ? Sl 13:38 0:00 /usr/bin/gnome-calculator
Matá-lo com fogo.
sudo kill -9 13695
Assista reaparecendo:
gert 16059 4.6 0.4 349736 16448 ? Sl 13:40 0:00 /usr/bin/gnome-calculator
Observe que isso ficará mais elegante com os planos para os planos Ubuntu 13.04, com o suporte adequado ao Job User.