Gemini on Question 13, Sep 18
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 because it is already dead. This is why it is ignoring your SIGTERM (and will also ignore a kill -9 SIGKILL).
Here is exactly what a zombie process is, and the step-by-step method to actually get rid of it.
Why is it a Zombie?
In Linux, when a process finishes its task, it dies. However, it leaves behind a small entry in the process table so its parent process can read its exit status.
A "zombie" (or <defunct>) process occurs when the child has died, but the parent process is poorly written, frozen, or overwhelmed, and hasn't checked on the child to clear it from the process table.
To get rid of the zombie, you must deal with the parent process.
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 Parent Process ID (PPID):
ps axo stat,ppid,pid,comm | grep -w Z
Output example:
Z 1234 5678 zombie_script <defunct>
- •Z: Indicates it is in a Zombie state.
- •1234 (PPID): The Parent Process ID. This is your target.
- •5678 (PID): The Zombie Process ID (which you can't kill).
Step 2: Nudge the Parent (The Gentle Way)
Sometimes, the parent process just needs a reminder to clean up its dead children. You can send a SIGCHLD signal to the parent process. This tells the parent, "Hey, one of your children died, check on it."
kill -s SIGCHLD 1234
(Replace 1234 with the PPID you found in Step 1).
Run the ps command from Step 1 again. If the zombie is gone, you're done! If it's still there, move to Step 3.
Step 3: Kill the Parent Process (The Guaranteed Way)
If the parent process refuses to acknowledge the dead child, the only way to clear the zombie is to kill the parent process.
When you kill the parent, the zombie becomes an "orphan." Linux handles orphans by automatically assigning them to the init or systemd process (PID 1). PID 1 is specifically programmed to immediately clean up any zombies it inherits.
First, try to terminate the parent gracefully:
kill 1234
If the parent process is stubborn, force-kill the parent:
kill -9 1234
Once the parent dies, the zombie will instantly vanish from the process table.
⚠️ IMPORTANT WARNINGS ⚠️
- 1.Check what the parent process is before killing it:
Runps -p 1234(using your PPID). If the parent process is a vital service (like your web server, database, or SSH daemon), killing it will take that service offline. You will need to restart that service immediately afterward. - 2.Never kill PID 1:
If the PPID of your zombie is1, it means the zombie has already been inherited by the system'sinitprocess, andinitis currently frozen or failing to reap it. Do not runkill -9 1. This will crash your entire operating system. If a zombie is stuck under PID 1, the only way to clear it is to reboot the server.
Exact recordShowHideThe model id, the run, the verbatim text with line numbers and its full sha256
- Scored
- answered
- Received
- 2026-09-18 09:06:27 UTC
- Run
- 20260918T090022Z-92b6f7
- Served by
- Google · HTTP 200 · finish stop
- Size
- 3,056 characters · 1,808 tokens out incl. hidden reasoning · 16.9 s
End of response · 63 lines · 3,056 characters · sha256 edb9b39a9b64242fc2cf51d152c23e1d52cb2d2c788ee7a103c49d07e3a9bac6