7

カーネル2.6.18を搭載したFedoraCore9 Webサーバーでは、initはゾンビプロセスを取得していません。これは、プロセステーブルが最終的に上限に達し、新しいプロセスを割り当てることができない場合には耐えられます。

のサンプル出力ps -el | grep 'Z'

F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
5 Z     0  2648     1  0  75   0 -     0 exit   ?        00:00:00 sendmail <defunct>
1 Z    51  2656     1  0  75   0 -     0 exit   ?        00:00:00 sendmail <defunct>
1 Z     0  2670     1  0  75   0 -     0 exit   ?        00:00:02 crond <defunct>
4 Z     0  2874     1  0  82   0 -     0 exit   ?        00:00:00 mysqld_safe <defunct>
5 Z     0 28104     1  0  76   0 -     0 exit   ?        00:00:00 httpd <defunct>
5 Z     0 28716     1  0  76   0 -     0 exit   ?        00:00:06 lfd <defunct>
5 Z    74 10172     1  0  75   0 -     0 exit   ?        00:00:00 sshd <defunct>
5 Z     0 11199     1  0  75   0 -     0 exit   ?        00:00:00 sendmail <defunct>
5 Z     0 11202     1  0  75   0 -     0 exit   ?        00:00:00 sendmail <defunct>
5 Z     0 11205     1  0  75   0 -     0 exit   ?        00:00:00 sendmail <defunct>
5 Z     0 11208     1  0  75   0 -     0 exit   ?        00:00:00 sendmail <defunct>
5 Z     0 11211     1  0  75   0 -     0 exit   ?        00:00:00 sendmail <defunct>
5 Z     0 11240     1  0  75   0 -     0 exit   ?        00:00:00 sendmail <defunct>
5 Z     0 11246     1  0  75   0 -     0 exit   ?        00:00:00 sendmail <defunct>
5 Z     0 11249     1  0  75   0 -     0 exit   ?        00:00:00 sendmail <defunct>
5 Z     0 11252     1  0  75   0 -     0 exit   ?        00:00:00 sendmail <defunct>
1 Z     0 14106     1  0  80   0 -     0 exit   ?        00:00:00 anacron <defunct>
5 Z     0 14631     1  0  75   0 -     0 exit   ?        00:00:00 sendmail <defunct>

これはOSのバグですか?設定ミス?この問題の原因についてのインスピレーションを探しています。ありがとう

4

1 に答える 1

4

これは、Ubuntuで2つの方法で私を襲った:

  1. カーネルに問題があります。私の場合、カーネル ドライバーがクラッシュし、プロセスの内部処理がおかしくなりました。これをテストする最善の方法は、/var/log/syslog (および dmesg) をチェックして、何かおかしくないかどうかを確認することです。

  2. 私がこれを見た他の時間は、initが「ほとんどの目的で子プロセスの親」ではない場合です(実際のマンページの引用)。これは、(strace プログラムが内部で使用する) ptrace syscall を使用してプロセスにアタッチする場合に発生する可能性があります。たとえば、strace を子プロセス B にアタッチする状況に陥りました。最終的に、プロセス B はその親と同様に終了します (どの順序かはわかりません)。プロセス B は、init が所有するゾンビのように見えます。ただし、その「ほとんどの目的」の親は、実際には strace プログラムでした。strace を強制終了した後、プロセス B がリープされました

于 2012-02-23T02:18:27.327 に答える