J'utilise actuellement supervisord pour gérer 100 instances d'un script s'exécutant simultanément. Si quelqu'un meurt, il en démarre un nouveau.
Cependant, il semble avoir du mal à maintenir un plus grand nombre (> 300 processus) et je cherche un remplaçant. Monit ne semble pas faire ce que je veux car il surveille les scripts individuels et ne semble pas pouvoir facilement regarder 100 instances du même script.
Des suggestions sur un autre outil que je pourrais utiliser?
process
monitoring
jong
la source
la source
Réponses:
Vous pouvez utiliser:
pour obtenir le nombre de processus enfants à partir d'un script bash (rappelez-vous que cela inclut ps). Donc, si vous voulez avoir 1000 processus, vous vérifiez si cela renvoie 1001. Sinon, lancez-les avec:
afin qu'ils s'exécutent en tant qu'enfants du script actuel (et donc soient inclus dans le décompte.) Vous pouvez ensuite dormir un peu, puis vérifier à nouveau dans une boucle pour toujours. Une chose à garder à l'esprit est que si vous générez d'autres processus, vous devrez modifier la
ps
commande pour filtrer les processus souhaités.Cette première commande est la pièce maîtresse du puzzle, elle devrait être un peu plus jusqu'à ce que vous ayez votre script.
la source
J'utiliserais
pgrep|wc -l
ou quelque chose comme ça dans un simple script shell. Attendez une seconde (ou moins sous Linux si vous le souhaitez) entre chaque vérification avecsleep
.la source
Si votre script meurt et revient simplement au shell, vous pouvez utiliser un script wrapper pour chaque instance:
ou vous écrivez un wrapper qui bifurque les scripts et les utilise
wait/waitpid
pour intercepter les processus morts.la source