Sobes.tech
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.