A zombie process (marked as <defunct> in ps) is a process that has completed execution but still has an entry in the Linux kernel process table because its parent process has not yet read its exit status code via wait() or waitpid(). Because zombies are already dead, executing kill -9 directly against a zombie PID fails.

Identifying Zombie Processes & Parent PIDs

Terminal Process Commandsbash
# Find all zombie processes on system
ps aux | grep 'Z'
 
# List Zombie PID, Process Name, and Parent PID (PPID)
ps -eo pid,ppid,status,cmd | grep 'Z'
 
# Send SIGCHLD signal to Parent Process (Notifies parent to harvest zombie)
kill -s SIGCHLD <PARENT_PID>
 
# If Parent process is unresponsive, kill Parent Process (Orphans adopt PID 1 init/systemd)
kill -9 <PARENT_PID>