ile docker kapsayıcısının içindeki pid 1'i öldürebilmemden dolayı, docker kabındaki ana python işlemini (PID 1) öldürmek istiyorum. Ancak SIGTERM
, SIGKILL
gibi sonlandırma sinyalleri çalışmaz. Yani, kill -SIGKILL 1
koşusunun hiçbir etkisi yoktur. Pid 1 kapsayıcısını kapsayıcının içinden nasıl öldürebilirim?? docker stop
veya benzeri çözümleri çalıştırmak istemiyorum.SIPKILL
Q
SIPKILL
6
A
cevap
0
Docker sorunu izleyicisine ve pid 1'lerin genel belgelerinin nasıl belirtildiğine göre, özellikle bir işleyiciyi sinyallere eklemeniz ve işlemi bunlardan öldürmeniz gerekir.
signal.signal(signal.SIGINT, exit_gracefully)
signal.signal(signal.SIGTERM, exit_gracefully)
exit_gracefully
sys.exit(0)
çağrı gerekmektedir.
Bu davranış, çekirdek tarafından sigaction
varsayılanı olarak adlandırılmayacağı için kernel tarafından aranıyor ve zorlanıyor, bu da diğer belgelerde sonlandırılıyor.
Node.js. da benzer bir işlem yapmamız gerekiyor.
SIGKILL, PID 1'e bu şekilde teslim edilmeyecektir (bunun yerine, bazı işleyiciyi etkinleştirebilirsiniz, ancak denemesi gereken bir şey) –
PID 1'i nasıl öldürebilirim? (en son çözüm python kodunun 'entrypoint.sh' üzerinden çalıştırılmasıdır, böylece python kodu PID olmayacaktır.) – Pooya
SIGSEGVing'in çoğu durumda etkili bir çözüm olduğunu keşfettim. –