A solução para isso, na verdade, é escrever uma verificação que monitore seu processo em segundo plano para obter a funcionalidade adequada. Se você quer apenas ter certeza de que algo está rodando em um determinado PID, um script que execute pgrep $(cat /path/to/pidfile)
funcionaria, mas isso é repleto de falso positivo potencial - se o seu processo morreu, então alguma outra coisa é executada e obtém o mesmo PID, então a sua verificação de processo terá sucesso quando não deveria.
A maneira correta de fazer isso é extorquir o código de daemonização em seu serviço e executá-lo sob algo como daemontools
- e quando ele explodir ele será automaticamente reiniciado. Você também precisa monitorar a funcionalidade, para capturar momentos em que o processo não morre, mas de alguma forma falha ao rodar corretamente.