Gemini on Question 13, Sep 16
How do I kill a zombie process in Linux that won't respond to SIGTERM?The short answer is: You cannot kill a zombie process directly, not even with kill -9 (SIGKILL).
A zombie process (marked with a Z status) is a process that is already dead. It has finished executing, but its entry remains in the process table because its parent process hasn't read its exit status yet. Since it's dead, it cannot receive signals like SIGTERM.
To get rid of a zombie, you have to deal with its parent process. Here is the step-by-step way to do that:
Step 1: Find the Parent Process ID (PPID)
First, you need to find out which process spawned the zombie. Run this command to list all zombie processes along with their PIDs and Parent PIDs (PPID):
ps -A -o stat,pid,ppid,cmd | grep -e '^[Zz]'
Example output:
Z 1234 5678 [dead_process] <defunct>
- •
1234is the PID of the zombie. - •
5678is the PPID (the parent process).
Step 2: Ask the Parent to clean it up (Gentle approach)
Before killing the parent, you can try sending a SIGCHLD signal to it. This signal essentially tells the parent, "Hey, one of your children died, you need to acknowledge it."
kill -s SIGCHLD <PPID>
(Replace <PPID> with the actual Parent PID, e.g., kill -s SIGCHLD 5678)
Check if the zombie is gone. If the parent process was just busy and not completely frozen, this might work. However, if the parent process is poorly coded or hung, this will fail.
Step 3: Kill the Parent Process (Aggressive approach)
If the gentle approach fails, the only way to clear the zombie is to kill the parent process.
When you kill the parent, the zombie process becomes an "orphan." Linux automatically assigns all orphan processes to the init or systemd process (PID 1). PID 1 routinely cleans up (reaps) zombies.
Kill the parent process using standard termination:
kill -15 <PPID>
If the parent also refuses to die, force-kill the parent:
kill -9 <PPID>
⚠️ Important Warnings:
- •Check what the parent is before you kill it: If the parent process is something critical (like your SSH daemon, a vital database, or your current shell), killing it will crash that service or log you out. You can check what the parent process is by running:
ps -p <PPID> -o cmd - •What if the parent is PID 1? If the parent of the zombie is already PID 1 (
initorsystemd), and it isn't cleaning up the zombie, your system is experiencing a deeper kernel or OS-level issue. In this extremely rare case, a system reboot is the only way to clear the zombie table.
Exact recordShowHideThe model id, the run, the verbatim text with line numbers and its full sha256
- Scored
- answered
- Received
- 2026-09-16 09:06:02 UTC
- Run
- 20260916T090004Z-fdcf7b
- Served by
- Google · HTTP 200 · finish stop
- Size
- 2,582 characters · 1,773 tokens out incl. hidden reasoning · 16.0 s
End of response · 46 lines · 2,582 characters · sha256 d6a5f9aa150b4017714ad961aeb03a85c8c5a00235aeb6ff4b7afdfbea52152c