في Linux الذي يقوم بتشغيل المشرف 3.0b1 ، لا يؤدي إرسال SIGKILL إلى عملية المشرف إلى إنهاء جميع العمليات الفرعية ، أي العمليات التي بدأت من خلال ملف التكوين.
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 ، إذا كان المشرف هو رقم التعريف الشخصي 19285:
kill -9 -19285
يؤدي رفض رقم التعريف الشخصي إلى إرسال إشارة القتل إلى مجموعة العملية بأكملها.
كنت أحاول تحقيق نفس الشيء. عمل SIGTERM بدلاً من SIGKILL بالنسبة لي.
أفضل "SIGTERM" على "SIGKILL مع معرّف العملية المنفي" لأنه يسمح بإيقاف التشغيل بشكل رشيق.
التعليق الأكثر فائدة
FWIW ، إذا كان المشرف هو رقم التعريف الشخصي 19285:
يؤدي رفض رقم التعريف الشخصي إلى إرسال إشارة القتل إلى مجموعة العملية بأكملها.