Ich verwende derzeit Supervisord, um 100 Instanzen eines Skripts zu verwalten, die gleichzeitig ausgeführt werden. Wenn einer stirbt, startet er einen neuen.
Es scheint jedoch schwierig zu sein, eine größere Anzahl (> 300 Prozesse) beizubehalten, und ich suche nach einem Ersatz. Monit scheint nicht zu tun, was ich will, da es einzelne Skripte überwacht und nicht in der Lage zu sein scheint, 100 Instanzen desselben Skripts einfach zu überwachen.
Irgendwelche Vorschläge zu einem anderen Tool, das ich verwenden könnte?
process
monitoring
jong
quelle
quelle
Antworten:
Sie können verwenden:
um die Anzahl der untergeordneten Prozesse aus einem Bash-Skript abzurufen (denken Sie daran, dass dies auch ps umfasst). Wenn Sie also 1000 Prozesse haben möchten, überprüfen Sie, ob dies 1001 zurückgibt. Wenn nicht, starten Sie sie mit:
damit sie als untergeordnete Elemente des aktuellen Skripts ausgeführt werden (und daher in die Zählung einbezogen werden) Wenn Sie andere Prozesse erzeugen, müssen Sie den
ps
Befehl ändern , um die gewünschten Prozesse zu filtern.Dieser erste Befehl ist das Kernstück des Puzzles, es sollte nur ein bisschen länger dauern, bis Sie Ihr Skript haben.
quelle
Ich würde
pgrep|wc -l
oder so etwas in einem einfachen Shell-Skript verwenden. Warten Sie eine Sekunde (oder weniger unter Linux, wenn Sie möchten) zwischen den einzelnen Überprüfungen mitsleep
.quelle
Wenn Ihr Skript abstürzt und einfach wieder in die Shell zurückkehrt, können Sie für jede Instanz ein Wrapper-Skript verwenden:
Oder Sie schreiben einen Wrapper, der die Skripte aufteilt und
wait/waitpid
zum Abfangen toter Prozesse verwendet.quelle