Supervisor: Das Senden von SIGKILL an den Vorgesetzten führt nicht zur Entlassung von Kindern

Erstellt am 21. Nov. 2012  ·  5Kommentare  ·  Quelle: Supervisor/supervisor

Unter Linux, auf dem Supervisor 3.0b1 ausgeführt wird, beendet das Senden eines SIGKILL an den Supervisord-Prozess nicht alle seine untergeordneten Prozesse, dh die Prozesse, die über die Konfigurationsdatei gestartet wurden.

Hilfreichster Kommentar

FWIW, wenn Supervisor pid 19285 ist:

  kill -9 -19285

Das Negieren der PID sendet das Kill-Signal an die gesamte Prozessgruppe.

Alle 5 Kommentare

SIGKILL kann nicht gefangen werden. Dies zeigt es:

$ python
>>> import signal
>>> def handler(signum, frame):
...   pass
... 
>>> signal.signal(signal.SIGKILL, handler)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
RuntimeError: (22, 'Invalid argument')
>>>

Es gibt nichts, was wir in unserem Code hinzufügen oder ändern können, um dies zu ändern.

Sicher, aber warum tötet das Töten des übergeordneten Prozesses nicht die untergeordneten Prozesse? Ich meine auf Linux-Ebene, nicht durch beaufsichtigtes Abfangen von SIGKILL und Töten seiner Kinder.

FWIW, wenn Supervisor pid 19285 ist:

  kill -9 -19285

Das Negieren der PID sendet das Kill-Signal an die gesamte Prozessgruppe.

Ich habe versucht, dasselbe zu erreichen. Das Senden von SIGTERM anstelle von SIGKILL hat bei mir funktioniert.
Ich würde "SIGTERM" gegenüber "SIGKILL mit negierter Prozess-ID" bevorzugen, da es ein ordnungsgemäßes Herunterfahren ermöglicht.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen