Atualmente, estou usando o supervisord para manter 100 instâncias de um script em execução ao mesmo tempo. Se algum dado morrer, ele inicia um novo.
No entanto, parece estar lutando para manter um número maior (> 300 processos) e estou procurando uma substituição. O Monit parece não fazer o que eu quero, pois monitora scripts individuais e não parece capaz de assistir facilmente 100 instâncias do mesmo script.
Alguma sugestão sobre uma ferramenta diferente que eu poderia usar?
process
monitoring
jong
fonte
fonte
Respostas:
Você pode usar:
para obter o número de processos filhos de um script bash (lembre-se de que isso inclui ps). Portanto, se você quiser ter 1000 processos, verifique se isso retorna 1001. Caso contrário, inicie-os com:
para que eles sejam executados como filhos do script atual (e, portanto, sejam incluídos na contagem.) Você pode dormir um pouco e verificar novamente em um loop para sempre. Uma coisa a ter em mente é que, se você estiver gerando outros processos, precisará modificar o
ps
comando para filtrar os processos que deseja.Esse primeiro comando é a peça principal do quebra-cabeça, deve ser um pouco mais até você ter seu script.
fonte
Eu usaria
pgrep|wc -l
ou algo assim em um script de shell simples. Aguarde um segundo (ou menos no Linux, se quiser) entre cada verificaçãosleep
.fonte
Se o seu script morrer e retornar ao shell, você poderá usar um script de wrapper para cada instância:
ou você escreve algum wrapper que bifurca os scripts e usa
wait/waitpid
para capturar processos mortos.fonte