Supervisor stoppt Kindprozesse
Eines der Probleme, die ich Gesicht mit supervisord ist, dass wenn ich einen Befehl, der wiederum einen anderen Prozess hervorbringt, supervisord ist nicht in der Lage es zu töten.
Ich habe zum Beispiel ein java-Prozess, die, wenn Sie normal läuft ist wie
$ zkServer.sh start-foreground
$ ps -eaf | grep zk
user 30404 28280 0 09:21 pts/2 00:00:00 bash zkServer.sh start-foreground
user 30413 30404 76 09:21 pts/2 00:00:10 java -Dzookeeper.something..something
Den supervisord config-Datei sieht folgendermaßen aus:
[program:zookeeper]
command=zkServer.sh start-foreground
autorestart=true
stopsignal=KILL
Diese Art von Prozessen, die mehrere Kinder nicht gut behandelt von supervisord wenn es darum geht, Sie zu stoppen von supervisorctl
. Also, wenn ich dieses aus der supervisord und versuchen Sie zu stoppen von supervisorctl, nur die top-level-Prozesses getötet wird, aber nicht die tatsächliche java-Prozess.
InformationsquelleAutor der Frage FUD | 2012-02-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das gleiche problem aufgetreten Rick Hanlon II hier: https://coderwall.com/p/4tcw7w
Option stopasgroup=true sollte gesetzt werden in der Rubrik Programm für supervisord zu stoppen, nicht nur der übergeordnete Prozess, aber auch die Kind-Prozesse.
Beispiel ist gegeben als:
Auch im Hinterkopf haben, dass Sie möglicherweise eine ältere Paket von supervisord, nicht "stopasgroup" - Funktionalität.
Ich habe versucht, diese Debian-Pakete auf Raspberry Pi:
InformationsquelleAutor der Antwort kuzavas
Folgt Anfang die wichtigsten bash-Skript namens von supervisord behoben das problem für mich:
Dieser tötet die gesamte Prozess-Gruppe, wenn das script beendet wird, so als wenn es getötet wird, die von supervisord.
InformationsquelleAutor der Antwort Fred Yankowski
Eine Funktion wurde vor kurzem Hinzugefügt, um supervisord zu senden SIGKILL, um den gesamten Prozess der Gruppe. Es ist in github aber noch nicht offiziell verfügbar.
Wenn die Prozess-id steht in einer Datei, die Sie verwenden können, die pid-proxy-Programm
InformationsquelleAutor der Antwort Roger Hoover
Den folgenden Artikel hat eine vertiefte Diskussion des Problems:
http://veithen.github.io/2014/11/16/sigterm-propagation.html
InformationsquelleAutor der Antwort Andreas Veithen
Können Sie auch Prioritäten in
/conf.d/your-configuration.conf
- Datei. Zum Beispiel, wenn Sie ausführen möchten, Tierpfleger zuerst und dann kafka können Sie zwei Programme.Niedriger Priorität bedeutet, dass das Programm zuerst gestartet und beendet Letzte.
InformationsquelleAutor der Antwort bex
versuchen Sie das supervisor-Programm config:
InformationsquelleAutor der Antwort Color