Minha solução preferida é um script python orientado por cron que cuida principalmente de iniciar os processos monitorados quando eles não estão em execução. Ele próprio pode obter e armazenar os PIDs de processos filho (e talvez outros metadados, se necessário, por exemplo, um último registro de data e hora da iteração OK) para uso posterior ou apenas monitorar os arquivos criados pelos próprios processos filhos.
Na primeira iteração, aproveito os padrões / cronogramas de falhas relativamente previsíveis e modifico os respectivos processos-filhos para simplesmente sair de forma limpa após um número especificado de iterações ou tempo total de execução. O processo de monitoramento seria apenas reiniciá-los.
No caminho, o script de monitoramento pode ser aprimorado para fazer uma análise de sanidade mais detalhada dos processos monitorados em execução e eliminá-los, se necessário. Por exemplo, verificando o último registro de data e hora da iteração OK que eu mencionei acima. Isso cuidaria de padrões de falha menos preditivos.
Para a execução real de estruturas de processo mais complexas, convém verificar minha resposta a essa pergunta: link .