Using preap to kill defunct processes on Solaris
Once in a while you will see some strange processes with <defunct> instead of a process name. This happens when a child process terminates, but the parent process isn't interested in the outcome because it didn't waited for the childs response.
Using ps
letīs check for our processes and only output the defunct processes
# ps -ef | grep defunct root 84838 426 0 - ? 0:00 <defunct> root 27841 27840 0 09:32:54 pts/1 0:00 grep defunct
A kill -9
to this process is without effect. Obviously, a zombie will go away when you terminate the parent process, but that isn't always an option.
However with later releases of Solaris Operating system you can reap such processes manually. The preap
forces the parent to reap the child. For example:
# preap 84838 84838: exited with status 0
This will cause the process to exit, and the kernel can then free up the resources that were allocated by that process.