Sobes.tech
Middle

Ako ukončiť zombie proces?

sobes.tech AI

Odpoveď od AI

Proces zombie je proces, ktorý ukončil svoju činnosť, ale naďalej zaberá miesto v tabuľke procesov systému, pretože jeho rodičovský proces ešte neprečítal návratový kód pomocou systémového volania wait().

Na ukončenie zombie procesu je najskôr potrebné ukončiť jeho rodičovský proces. Keď rodičovský proces skončí, zombie proces bude adoptovaný procesom init (alebo jeho moderným ekvivalentom, ako je systemd), ktorý vykoná potrebné systémové volanie wait() a odstráni zombie z tabuľky procesov.

Kroky na ukončenie zombie procesu:

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

    # Vyhľadanie zombie procesov a ich PPID
    ps aux | awk '{ print $8, $2, $4 }' | grep Z
    

    Výstup bude približne takýto: Z 1234 5678, kde 1234 je PID zombie procesu a 5678 je PPID rodičovského procesu.

  2. Ukončite rodičovský proces. Použite PID rodičovského procesu získaný v predchádzajúcom kroku.

    # Vynútené ukončenie rodičovského procesu
    kill -9 <PPID_rodičovského_procesu>
    

    Použite signál SIGKILL (-9) na garantované ukončenie rodičovského procesu, ak bežný signál SIGTERM nefunguje.

Po ukončení rodičovského procesu systém automaticky odstráni zombie. V zriedkavých prípadoch, ak je problém so zombie procesmi spôsobený hlbokým problémom jadra operačného systému, môže byť potrebné reštartovať server.