Supervisor: Отправка SIGKILL супервизору не прерывает работу потомков

Созданный на 21 нояб. 2012  ·  5Комментарии  ·  Источник: Supervisor/supervisor

В Linux с запущенным супервизором 3.0b1 отправка SIGKILL процессу супервизора не завершает все его дочерние процессы, то есть процессы, запущенные через файл конфигурации.

Самый полезный комментарий

FWIW, если супервайзер pid 19285:

  kill -9 -19285

Отрицание pid отправляет сигнал уничтожения всей группе процессов.

Все 5 Комментарий

SIGKILL не может попасть в ловушку. Это демонстрирует:

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

Мы ничего не можем добавить или изменить в нашем коде, чтобы это изменить.

Конечно, но почему убийство родительского процесса не убивает дочерние? Я имею в виду на уровне Linux, а не через перехват SIGKILL супервизором и убийство его потомков.

FWIW, если супервайзер pid 19285:

  kill -9 -19285

Отрицание pid отправляет сигнал уничтожения всей группе процессов.

Я пытался добиться того же. Отправка SIGTERM вместо SIGKILL у меня сработала.
Я бы предпочел «SIGTERM», а не «SIGKILL с инвертированным идентификатором процесса», поскольку он позволяет плавно завершить работу.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги