両方 Zombie
と defunct
は同じです。 ZOMBIE
state of the process
の 1 つです defunct
がない間 カーネルのソース コードから確認できます。
enum proc_state {
UNUSED, /*** processes in initial state **/
EMBRYO,
SLEEPING,
RUNNABLE,
RUNNING,
ZOMBIE /** processes in final state **/
};
ゾンビ状態とは、ゾンビが終了したが、まだクリーンアップされていない場所を意味します .
proc(1)
の man ページを開くことができます この /proc/[pid]/stat
を見てください プロセスに関するステータス情報。これは ps(1)
で使用されます .
Linux の場合、「無効」プロセスと「ゾンビ」プロセスは同じです。
man ps
から :
<defunct>
とマークされたプロセス 親が適切に破壊しなかったために残っている死んだプロセス (いわゆる「ゾンビ」) です。親プロセスが終了すると、これらのプロセスは init(8) によって破棄されます。
PROCESS STATE CODES
Here are the different values that the s, stat and state output specifiers (header "STAT" or "S") will display to describe the state of a process:
D uninterruptible sleep (usually IO)
R running or runnable (on run queue)
S interruptible sleep (waiting for an event to complete)
T stopped by job control signal
t stopped by debugger during the tracing
W paging (not valid since the 2.6.xx kernel)
X dead (should never be seen)
Z defunct ("zombie") process, terminated but not reaped by its parent
Achal が言ったように、機能停止は ps によって追加されました。厳密に言えば、それらは同じものではありません。
たとえば、次の表では、tid 10941 のみがゾンビでした。他のスレッドは、Z ではなく D のステータスでした。
$ grep prometheus foo/bar/sos_commands/process/ps_-elfL
4 Z root 10941 10920 10941 0 6 80 0 - 0 exit Mar14 ? 00:11:41 [prometheus] <defunct>
1 D root 10941 10920 11010 0 6 80 0 - 621811 wait_o Mar14 ? 00:11:08 [prometheus] <defunct>
1 D root 10941 10920 11025 0 6 80 0 - 621811 wait_o Mar14 ? 00:08:13 [prometheus] <defunct>
1 D root 10941 10920 11057 0 6 80 0 - 621811 wait_o Mar14 ? 00:11:12 [prometheus] <defunct>
1 D root 10941 10920 11060 0 6 80 0 - 621811 wait_o Mar14 ? 00:11:42 [prometheus] <defunct>
1 D root 10941 10920 11298 0 6 80 0 - 621811 wait_o Mar14 ? 00:11:05 [prometheus] <defunct>