09-09-2008
I have bad, worse and plain ugly news for you:
The bad news is that rebooting is the only way to get rid of zombies (this is what the "defunct" processes are usually called).
The worse news is that AIX is not to blame for these processes. The OS (read: the kernel) maintains a so-called "process table", where every running process gets an entry. All the processes are additionally organised in an hierarchy. At the root of this hierarchy is a process called "init" which is the process number 0. In fact when the machine is booted the first process to be started is this init, which in turn works through /etc/inittab (hence the name), and so on and so on until the system is up and alive.
When a user logs on there is a getty process (one of the childs of init), which starts a shell (now a child of getty) for the user, who now can start processes (childs of his shell), .... If a process is declared to run independently from the users shell (a background process or a process started with nohup) it is "passed over" to the init process as a child.
A Zombie is now a process which parent has died without cleaning up its leftovers. It still has an entry in the process table but this entry cannot be removed because the parent process which would normally control it is gone. From the whole tree some branch is cut off but a leaf from the branch is dangling - in the nowhere.
Now, after the bad and the worse, the very bad news: zombies are - excusively - a symptom of sluggish programming. A process is responsible for cleaning up its environment and if it doesn't do so on a regular basis its a case of "programmer has not found out how to program in the Unix environment yet". PEBKAC on behalf of your software vendor.
I hope this helps.
bakunin
10 More Discussions You Might Find Interesting
1. UNIX for Dummies Questions & Answers
When I ps -ef I see about 3 or 4 <DEFUNCT> things - what are these, and what causes them? Are they a concern? How can I fix them?
Thanks,
Michael (4 Replies)
Discussion started by: cuppjr
4 Replies
2. Programming
how can i assure that daemon process which is being run as init child,can be removed immediately from system when it goes defunct or to avoid daemon process becoming defunt? (5 Replies)
Discussion started by: rish2005
5 Replies
3. Solaris
mqm 17700 16815 0 0:00 <defunct>
kill -9 does not work, even as root (10 Replies)
Discussion started by: csaunders
10 Replies
4. UNIX for Dummies Questions & Answers
Hey guys/gals. I am new to the site and fairly new to Unix/Linux. I have a master netbackup server (solaris) that I get pinged on occasionally regarding defunct processes. (Usually over 50 or so of them.) I know what a defunct process is, but what is it a product of? Just plain sloppy code? (From... (1 Reply)
Discussion started by: EMCSANMAN
1 Replies
5. UNIX for Dummies Questions & Answers
can some one please explain
zombie
orphan
defunct
and how they r related (3 Replies)
Discussion started by: pbsrinivas
3 Replies
6. Shell Programming and Scripting
Hi All,
Sorry to bother you all if my query is silly. Can you please clarify my doubts on defunct processes.
Actually coming to the scenario, i have a server which is under cluster environment. Server B is having problems with the defunct process. There was a cron scheduled on Server B which... (0 Replies)
Discussion started by: reddybs
0 Replies
7. HP-UX
Dear Sir / Madam,
We have two socket programs which are running in background. These two socket programs are creating defunct processes in HP-UX which were not happening in Compaq True64 UNIX. What is the root cause of these defunct processes and how can we correct it?
Your suggestion will be... (3 Replies)
Discussion started by: kcsahoo
3 Replies
8. UNIX for Advanced & Expert Users
HiI had a tool fail recently, on analysis I found it was cleaning up orphaned directories that had been created by specific processes that had died for some reason, thus failing to clean up after themselves.The directories were of the form /dir.pid. The tool would look to see if any instances of... (2 Replies)
Discussion started by: steadyonabix
2 Replies
9. HP-UX
I'd like to remove this defunct processes without rebooting. Or, I could remove this defuncts when the maximum allowable process is nearly reached, then send an email to the user/team. How can I determine the maximum allowable process that a server can handle? Any thoughts?
Jin@PRODUCTION: >... (3 Replies)
Discussion started by: Jin_
3 Replies
10. HP-UX
How to find out and clear the 'defunct' processes at OS and DB level ..?? (6 Replies)
Discussion started by: SurajR
6 Replies
preap(1) User Commands preap(1)
NAME
preap - force a defunct process to be reaped by its parent
SYNOPSIS
preap [-F] pid...
DESCRIPTION
A defunct (or zombie) process is one whose exit status has yet to be reaped by its parent. The exit status is reaped via the wait(3C),
waitid(2), or waitpid(3C) system call. In the normal course of system operation, zombies may occur, but are typically short-lived. This may
happen if a parent exits without having reaped the exit status of some or all of its children. In that case, those children are reparented
to PID 1. See init(1M), which periodically reaps such processes.
An irresponsible parent process may not exit for a very long time and thus leave zombies on the system. Since the operating system destroys
nearly all components of a process before it becomes defunct, such defunct processes do not normally impact system operation. However, they
do consume a small amount of system memory.
preap forces the parent of the process specified by pid to waitid(3C) for pid, if pid represents a defunct process.
preap will attempt to prevent the administrator from unwisely reaping a child process which might soon be reaped by the parent, if:
o The process is a child of init(1M).
o The parent process is stopped and might wait on the child when it is again allowed to run.
o The process has been defunct for less than one minute.
OPTIONS
The following option is supported:
-F Forces the parent to reap the child, overriding safety checks.
OPERANDS
The following operand is supported:
pid Process ID list.
EXIT STATUS
The following exit values are returned by preap, which prints the exit status of each target process reaped:
0 Successfully operation.
non-zero Failure, such as no such process, permission denied, or invalid option.
ATTRIBUTES
See attributes(5) for descriptions of the following attributes:
+-----------------------------+-----------------------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+-----------------------------+-----------------------------+
|Availability |SUNWesu (32-bit) |
+-----------------------------+-----------------------------+
| |SUNWesxu (64-bit) |
+-----------------------------+-----------------------------+
SEE ALSO
proc(1), init(1M), waitid(2), wait(3C), waitpid(3C), proc(4), attributes(5)
WARNINGS
preap should be applied sparingly and only in situations in which the administrator or developer has confirmed that defunct processes will
not be reaped by the parent process. Otherwise, applying preap may damage the parent process in unpredictable ways.
SunOS 5.10 26 Mar 2001 preap(1)