Supervisor: L'envoi de SIGKILL au superviseur ne met pas fin aux enfants

Créé le 21 nov. 2012  ·  5Commentaires  ·  Source: Supervisor/supervisor

Sous Linux exécutant le superviseur 3.0b1, l'envoi d'un SIGKILL au processus supervisé ne termine pas tous ses processus enfants, c'est-à-dire les processus démarrés via le fichier de configuration.

Commentaire le plus utile

FWIW, si le superviseur est le pid 19285 :

  kill -9 -19285

La négation du pid envoie le signal d'arrêt à l'ensemble du groupe de processus.

Tous les 5 commentaires

SIGKILL ne peut pas être piégé. Cela le démontre :

$ 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')
>>>

Il n'y a rien que nous puissions ajouter ou modifier dans notre code pour changer cela.

Certes, mais pourquoi tuer le processus parent ne tue pas les enfants ? Je veux dire au niveau Linux, pas en interceptant SIGKILL et en tuant ses enfants.

FWIW, si le superviseur est le pid 19285 :

  kill -9 -19285

La négation du pid envoie le signal d'arrêt à l'ensemble du groupe de processus.

J'essayais d'obtenir la même chose. L'envoi de SIGTERM au lieu de SIGKILL a fonctionné pour moi.
Je préférerais le "SIGTERM" à "SIGKILL avec ID de processus annulé" car il permet un arrêt en douceur.

Cette page vous a été utile?
0 / 5 - 0 notes