Should I kill zombie process in my system?

Solution 1:

You cannot kill a zombie, it is already dead.

The resources of that process are free and available to other processes. What remains is an entry in the process table. This does not have an influence on the performance, don't worry.

Solution 2:

What are these zombie processes that show up in ps? I kill them but they don't go away!

Zombies are dead processes. You cannot kill the dead. All processes eventually die, and when they do they become zombies. They consume almost no resources, which is to be expected because they are dead! The reason for zombies is so the zombie's parent (process) can retrieve the zombie's exit status and resource usage statistics. The parent signals the operating system that it no longer needs the zombie by using one of the wait() system calls.

When a process dies, its child processes all become children of process number 1, which is the init process. Init is always waiting for children to die, so that they don't remain as zombies.

If you have zombie processes it means those zombies have not been waited for by their parent (look at PPID displayed by ps -l). You have three choices: Fix the parent process (make it wait); kill the parent; or live with it. Remember that living with it is not so hard because zombies take up little more than one extra line in the output of ps.

Source: http://www.linuxsa.org.au/tips/zombies.html

And in case you’re on a killing spree, this superuser thread might be interesting to you: How do you find the parent process of a zombie process?