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
killed 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
ps -fauwxw
, 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