Supervisor: Enviar SIGKILL para supervisord não encerra crianças

Criado em 21 nov. 2012  ·  5Comentários  ·  Fonte: Supervisor/supervisor

No Linux executando o supervisor 3.0b1, enviar um SIGKILL para o processo supervisord não encerra todos os seus processos filho, ou seja, os processos iniciados por meio do arquivo de configuração.

Comentários muito úteis

FWIW, se o supervisor for pid 19285:

  kill -9 -19285

Negar o pid envia o sinal de eliminação para todo o grupo de processos.

Todos 5 comentários

SIGKILL não pode ser preso. Isso demonstra:

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

Não há nada que possamos adicionar ou alterar em nosso código para mudar isso.

Certamente, mas por que matar o processo dos pais não mata os filhos? Quero dizer, no nível do Linux, não através do supervisord interceptando o SIGKILL e matando seus filhos.

FWIW, se o supervisor for pid 19285:

  kill -9 -19285

Negar o pid envia o sinal de eliminação para todo o grupo de processos.

Eu estava tentando conseguir a mesma coisa. Enviar SIGTERM em vez de SIGKILL funcionou para mim.
Eu preferiria o "SIGTERM" em vez do "SIGKILL com ID de processo negado", pois permite um desligamento normal.

Esta página foi útil?
0 / 5 - 0 avaliações