Junior — Middle
Jak można zakończyć lub wymusić zatrzymanie procesu zombie w systemie operacyjnym?
sobes.tech AI
Odpowiedź od AI
Proces zombie to proces, który zakończył się, ale jego proces nadrzędny jeszcze nie odczytał jego statusu zakończenia (nie wywołał wait). W systemie zajmuje wpis w tabeli procesów, ale nie używa zasobów CPU.
Nie można wymusić bezpośrednio zakończenia procesu zombie, ponieważ jest już zakończony. Aby pozbyć się zombie, należy:
- Zakończyć lub zrestartować proces nadrzędny, który nie wywołał wait. W tym przypadku init (PID 1) stanie się nowym rodzicem zombie i automatycznie wywoła wait, usuwając go.
- Wysłać sygnał SIGCHLD do procesu nadrzędnego, aby obsłużył status zakończenia procesów potomnych.
Przykład polecenia do wysłania sygnału do rodzica:
kill -s SIGCHLD <PID_rodzica>
Jeśli rodzic nie reaguje, można go zakończyć:
kill -9 <PID_rodzica>
Po tym init przejmie i usunie zombie.