Di Linux yang menjalankan supervisor 3.0b1, mengirimkan SIGKILL ke proses supervisord tidak menghentikan semua proses turunannya, yaitu proses yang dimulai melalui file konfigurasi.
SIGKILL tidak bisa dijebak. Ini menunjukkannya:
$ 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')
>>>
Tidak ada yang bisa kita tambahkan atau ubah dalam kode kita untuk mengubahnya.
Tentu saja, tetapi mengapa membunuh proses induk tidak membunuh proses anak? Maksud saya di tingkat Linux, bukan melalui penyelia yang mencegat SIGKILL dan membunuh anak-anaknya.
FWIW, jika supervisor adalah pid 19285:
kill -9 -19285
Meniadakan pid mengirimkan sinyal mematikan ke seluruh grup proses.
Saya mencoba untuk mencapai hal yang sama. Mengirim SIGTERM alih-alih SIGKILL berhasil untuk saya.
Saya lebih suka "SIGTERM" daripada "SIGKILL dengan ID proses yang dinegasikan" karena memungkinkan shutdown yang anggun.
Komentar yang paling membantu
FWIW, jika supervisor adalah pid 19285:
Meniadakan pid mengirimkan sinyal mematikan ke seluruh grup proses.