Best way to kill Zombie and D state processes in linux
Solution 1:
Double tap.
Actually, reboot. There's no real way to easily get rid of a zombie, but there's really no reason to because a zombie isn't taking up resources on the computer; it's an orphaned entry in a process table. Init is supposed to collect it but something went wrong with the process. http://en.wikipedia.org/wiki/Zombie_process
Perhaps you're asking because there's worse problem...are you getting a boatload of zombies roaming your process table? That usually means a bug in the program or a problem with a configuration. You shouldn't have a huge number of zombies on the system. One or two I don't worry. If you have fifty of them from Apache or some other daemon, you probably have a problem. But that's not directly related to your question...
Solution 2:
/sbin/reboot
You can't kill a zombie - its already dead
If the ppid still exists, then terminating that can often clean up the spawned zombies.
You shouldn't be killing processes in uninterruptible sleep - usually this means they're i/o bound, but IIRC it can also occur during a blocking read from e.g. a network socket.
Solution 3:
Errors in underlying filesystem or disks might cause I/O bound processes. In this case try to "umount -f" the filesystem they depend upon - this will abort whatever outstanding I/O requests there are open.
Solution 4:
Next line will kill all zombies
ps -xal | grep defunct | awk '{ system (" kill -9 " $4 ) }'