Supervisor: SIGKILLをsupervisordに送信しても、子は終了しません

作成日 2012年11月21日  ·  5コメント  ·  ソース: Supervisor/supervisor

スーパーバイザー3.0b1を実行しているLinuxでは、SIGKILLをスーパーバイザープロセスに送信しても、そのすべての子プロセス、つまり構成ファイルから開始されたプロセスが終了するわけではありません。

最も参考になるコメント

FWIW、スーパーバイザーがpid 19285の場合:

  kill -9 -19285

pidを否定すると、プロセスグループ全体にkillシグナルが送信されます。

全てのコメント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を否定すると、プロセスグループ全体にkillシグナルが送信されます。

私は同じことを達成しようとしていました。 SIGKILLの代わりにSIGTERMを送信することは私のために働きました。
正常にシャットダウンできるので、「プロセスIDが否定されたSIGKILL」よりも「SIGTERM」の方が好きです。

このページは役に立ちましたか?
0 / 5 - 0 評価