Ukončení zombie procesu v prostředích Linux

Resumen: Co je to zombie proces, jak ho najít a jak ho zabít nebo ukončit.

Este artículo se aplica a Este artículo no se aplica a Este artículo no está vinculado a ningún producto específico. No se identifican todas las versiones del producto en este artículo.

Instrucciones

Co je to zombie proces:
Je to proces, který skončil, ale ne celý je okamžitě odstraněn z paměti, protože jeho deskriptor procesu zůstává v paměti.

Jaké by mělo být normální chování procesu:
Když proces skončí, stav procesu se změní na EXIT_ZOMBIE a nadřazený proces je upozorněn, že jeho podřízený proces zemřel s SIGCHLD signál.

Nadřazený proces by pak měl spustit wait() Systémové volání přečte stav ukončení mrtvého procesu a další informace. Po wait() se volá, zombie proces je odstraněn z paměti. To se děje rychle, takže nevidíte, že by se ve vašem systému hromadily zombie procesy. Ale v případech, kdy vidíme, že se hromadí několik zombie procesů, jedná se o situaci, kdy programový kód není efektivní.

Jak najít zombie procesy:
Spuštění příkazu top
výsledky z příkazu Top

Spuštění příkazu ps -ef | grep defunct
Výsledek nefunkčního příkazu

Jak ukončit akumulující se zombie procesy:
Ve většině případů mají zombie procesy stejné ID nadřazeného procesu.

Proces lze odstranit dvěma způsoby:
  • Odešlete SIGCHLD signál nadřazenému procesu.
Tento signál říká nadřazenému procesu, aby spustil wait() systém volání a vyčistit své zombie děti:
kill -s SIGCHLD <PPID>
Příklad:
kill -s SIGCHLD 2201
  • Ukončete zombie rodičovský proces
kill -9 <PPID>
Příklad:
kill -9 2201

Productos afectados

Dell OpenManage Enterprise, NetWorker Series
Propiedades del artículo
Número del artículo: 000019108
Tipo de artículo: How To
Última modificación: 12 abr 2025
Versión:  4
Encuentre respuestas a sus preguntas de otros usuarios de Dell
Servicios de soporte
Compruebe si el dispositivo está cubierto por los servicios de soporte.