Gemini on Question 13, Sep 30
How do I kill a zombie process in Linux that won't respond to SIGTERM?Here is the short answer: You cannot kill a zombie process because it is already dead.
Sending it a SIGTERM (kill -15) or even a SIGKILL (kill -9) will not work. A zombie process is simply an entry left in the process table. It has finished executing, but its parent process hasn't read its exit status yet (a process called "reaping").
To get rid of a zombie, you have to deal with its parent. Here is how to do it step-by-step:
Step 1: Find the Parent Process ID (PPID)
First, you need to find out which process spawned the zombie. Run this command, replacing <zombie_PID> with the Process ID of the zombie:
ps -o ppid= -p <zombie_PID>
(Alternatively, you can run ps -ef | grep Z to see a list of all zombies and their parents).
Step 2: Nudge the Parent (Safe Method)
Sometimes, the parent process is just hanging or missed the notification that its child died. You can explicitly tell the parent to reap its children by sending it a SIGCHLD signal:
kill -s SIGCHLD <parent_PID>
Check if the zombie is gone. If it is still there, the parent process is poorly written or frozen, and you must move to Step 3.
Step 3: Kill the Parent Process (The Fix)
If the parent won't reap the child, you must kill the parent process. When a parent process dies, all of its zombie children are "adopted" by init or systemd (PID 1). PID 1 routinely cleans up (reaps) all zombie processes assigned to it.
Kill the parent gracefully first:
kill <parent_PID>
If the parent doesn't respond, force kill the parent:
kill -9 <parent_PID>
Note: Be careful here. If the parent process is a vital system service or an application you are actively using, killing it will shut down that service/application.
⚠️ Are you sure it's a Zombie? (The "State D" Confusion)
People often confuse Zombie (Z) processes with Uninterruptible Sleep (D) processes. Neither of them responds to kill -9.
Run ps -o stat= -p <PID> to check its state:
- •If it outputs
Z: It is a Zombie. Follow the steps above. - •If it outputs
D: It is in Uninterruptible Sleep.
If it is in State D:
You cannot kill a process in state D, not even by killing its parent. State D means the process is waiting on a hardware device or network file system (I/O) to respond. It is locked inside the Linux kernel.
- •How to fix
D: You must resolve the hardware/network issue (e.g., forcefully unmount a dead NFS share, plug a disconnected USB drive back in) or reboot the server.
Exact recordShowHideThe model id, the run, the verbatim text with line numbers and its full sha256
- Scored
- answered
- Received
- 2026-09-30 09:05:51 UTC
- Run
- 20260930T090007Z-45ce12
- Served by
- Google · HTTP 200 · finish stop
- Size
- 2,572 characters · 1,863 tokens out incl. hidden reasoning · 16.8 s
End of response · 45 lines · 2,572 characters · sha256 539a45bb30ad40cfb6afdaeb77a08b7d0f738b8c1a8ea58459867b95cbf810fb