プロセスリストにApache2が死んでいると表示されるのはなぜですか?

プロセスリストにApache2が死んでいると表示されるのはなぜですか?

実行すると、ビューtopに悪い行が表示されます。

 2475 www-data  20   0     0    0    0 Z    1  0.0   0:00.19 apache2 <defunct> 

なぜこのプロセスが進行<defunct>し、どうすればよいですか?

答え1

無害です。無視しても構いません。これはゾンビプロセスです。マニュアルページps

Z    Defunct ("zombie") process, terminated but not reaped by its parent.

Wikipediaページもご覧ください。ゾンビプロセス

本当に削除したい場合は、apache2を再起動してください。マシンを再起動すると確かに問題は解決しますが、必ずしも必要ではありません。

この問題も同様です。 -親プロセスがinitの<defunct>プロセスを終了するには?

答え2

失敗したプロセスはゾンビプロセスです。 Kill コマンドはゾンビプロセスには影響しません。これは親プロセスを終了することで終了できます。 PPID値で親エントリを見つけることができます。 PPIDが1(init)の場合、つまりinit親プロセスがもう存在しないため、プロセスが調整された場合に再起動することが唯一の回避策です。

答え3

SIGCHLD親プロセスを終了するのではなく、親プロセスにシグナルを送信できます。親プロセスがこのシグナルに登録してwaitシステムコールを呼び出すと、存在しないプロセスは削除されます。

関連情報