6

When I run top I see one line that doesn't look too good:

 2475 www-data  20   0     0    0    0 Z    1  0.0   0:00.19 apache2 <defunct> 

Why is this process <defunct> and what should I do about it?

Rui F Ribeiro
  • 56,709
  • 26
  • 150
  • 232
cwd
  • 45,389

3 Answers3

7

It is harmless. You can ignore it. It is a zombie process. The man page for ps has

Z    Defunct ("zombie") process, terminated but not reaped by its parent.

See also the Wikipedia page on Zombie process.

If you really want to get rid of it, restarting apache2 may do the trick. Rebooting the machine will certainly make it go away, but that is definitely not necessary.

This question is similar. - How can I kill a <defunct> process whose parent is init?

Faheem Mitha
  • 35,108
  • It's actually interesting because I just finished rebooting the machine and the process was sitting there in the list. Thanks for your help. – cwd Dec 09 '11 at 05:31
  • What if they come even after rebooting or restarting apache? This is happening on two of my servers? – J Bourne Feb 09 '15 at 13:24
  • @Sai it shouldn't come up after rebooting. If you have a question, ask it. – Faheem Mitha Feb 09 '15 at 13:35
3

Defunct processes are zombie processes. The kill command has no effect on a zombie process. These can be killed by killing the parent process. You can find parent from the PPID value. If the PPID is 1(init) i.e. process is adapted by init as the parent is no more, then rebooting is the only solution.

3

You can send a SIGCHLD signal to the parent process instead of killing it. If parent process is registered with this signal and the wait system call is called, this defunct process will be removed.

jw013
  • 51,212
Aneesh
  • 31