Defunct processes may also be known as "zombie" processes. They do not use any system resources - CPU, memory etc.
but may be seen as entries in their respective operating system process table.
A zombie is already dead, so you cannot kill it. To clean up a zombie, it must be
waited on by its parent, so killing the parent should work to eliminate the
zombie. (After the parent dies, the zombie will be inherited by pid 1, which
will wait on it and clear its entry in the process table.) If your daemon is
spawning children that become zombies, you have a bug. Your daemon should notice
when its children die and wait on them to determine their exit status.
##What Causes Zombie Processes on Linux?
A poorly written parent process might not call
the wait() function when the child process is created. This means nothing is
watching for state changes in the child process, and the SIGCHLD signal will be
ignored. Or, perhaps another application is affecting the execution of the
parent process, either due to poor programming or malicious intent.
[oracle@oracle ~]$ ps -ef|grep zombie
oracle 175489580 0 11:33 pts/0 00:00:00
grep --color=auto zombie
No comments:
Post a Comment