Respostas:
Se for iniciado a partir do init, você poderá reaparecer pelo init. Defina a ação para o processo 'reaparecer' para os níveis de execução em que você deseja o processo.
Eu já respondi uma pergunta semelhante antes .
No seu caso:
#!/bin/bash
while ! <<command>>
do
sleep 1
echo "Restarting program..."
done
Substitua <<command>>
pelo comando que você deseja executar. O processo precisa terminar com o código de saída zero para interromper o loop. Caso contrário, ele será reiniciado pelo script.
Deseja apenas reiniciá-lo se morrer? O problema é que ele não lida com situações em que congela. Portanto, apenas verificar o processo nem sempre ajuda. Portanto, se isso é algo como um servidor da web, você deseja que um script o verifique da perspectiva do usuário.
Se você configurar o Nagios Monitoring, poderá usar manipuladores de eventos . Esses são apenas os scripts que você escreve que serão executados quando o serviço for desativado; portanto, você pode ter um que reinicie algo como o Apache se o site estiver inativo.
Dependendo da distribuição, mas usamos com êxito "monit" para esta tarefa. É bem fácil. Você pode escrever seus próprios cheques, monitorar o processo PID, etc.
Arquivo monitrc de exemplo:
check process sshd with pidfile /var/run/sshd.pid
start program "/etc/init.d/ssh start"
stop program "/etc/init.d/ssh stop"
if failed port 22 protocol ssh then restart
if 5 restarts within 5 cycles then timeout
Resposta curta : Não, você precisa fazer isso sozinho.
Resposta longa : você precisará de um processo pai para iniciá-lo e continue verificando se está ativo e reinicie-o, se necessário.
Você pode usar algo parecido daemontools
para gerenciá-lo.