Sounds scary, doesn't it? "zombie
" is the rather macabre
name given by early unix developers to a process which has terminated
(either because it was kill
ed or because it chose to exit()
on its own), but whose parent process
has not yet been notified of its termination. This is the kind of unix idiosyncrasy
that might be termed "cute
Normally, as with other unkillable conditions, this one exists only for an invisible instant, and is resolved. However, when said parent process neglects to call wait() (how a parent is notified about child exits - go figure), or becomes in some other way indisposed, zombie children can start to pile up.
Fortunately, while people bug out because they can't kill it, it is, in fact, already dead - hence the name. Zombies exist only as entries in the process table - they consume no resources, and are there solely as a holder for the child's exit status until the parent retrieves it. They're generally not as bad as people think they are; although they are sometimes evidence of bad programming, and process tables are of finite size, and so can fill up too...
Zombies can be observed via ps as processes with a status of Z.
If they're really burning your goat, you can attempt to kill the parent process. Parents can be determined via
, and killed separately.
If a process seems to have no parent but is nonetheless a zombie, well, that's weird, but you can try a
kill -s SIGHUP 1
... that might jolt the init
process into doing housekeeping.
After that, if you're still stuck with it, it's time to reboot. And barricade yourself in the house.
See also: oprhan process