Sobes.tech
Middle

Jak ukončit zombie proces?

sobes.tech AI

Odpověď od AI

Proces zombie je proces, který dokončil svůj běh, ale stále zabírá místo v tabulce procesů systému, protože jeho rodičovský proces ještě nečetl návratový kód pomocí systémového volání wait().

Pro ukončení zombie procesu je nejprve nutné ukončit jeho rodičovský proces. Když rodičovský proces skončí, zombie proces bude adoptován procesem init (nebo jeho moderním ekvivalentem, například systemd), který provede potřebné systémové volání wait() a odstraní zombie z tabulky procesů.

Kroky k ukončení zombie procesu:

  1. Určete PPID (identifikátor rodičovského procesu) zombie procesu.

    # Vyhledání zombie procesů a jejich PPID
    ps aux | awk '{ print $8, $2, $4 }' | grep Z
    

    Výstup bude přibližně takový: Z 1234 5678, kde 1234 je PID zombie procesu a 5678 je PPID rodičovského procesu.

  2. Ukončete rodičovský proces. Použijte PID rodičovského procesu získaný v předchozím kroku.

    # Vynucené ukončení rodičovského procesu
    kill -9 <PPID_rodicovského_procesu>
    

    Použijte signál SIGKILL (-9) k zaručení ukončení rodičovského procesu, pokud běžný signál SIGTERM nefunguje.

Po ukončení rodičovského procesu systém automaticky odstraní zombie proces. Ve vzácných případech, pokud je problém se zombie procesy způsoben hlubokým problémem jádra operačního systému, může být nutné restartovat server.