私はLinux / Unixシステムの初心者であり、ゾンビプロセスについて読んだだけなので、1つの質問があります。現在10個あります。それらを殺す必要がありますか?システムに負荷がかかりますか?
592 processes: 581 sleeping, 1 running, 10 zombie, 0 stopped
私はLinux / Unixシステムの初心者であり、ゾンビプロセスについて読んだだけなので、1つの質問があります。現在10個あります。それらを殺す必要がありますか?システムに負荷がかかりますか?
592 processes: 581 sleeping, 1 running, 10 zombie, 0 stopped
回答:
あなたはゾンビを殺すことはできません、それはすでに死んでいます。
そのプロセスのリソースは無料で、他のプロセスで使用できます。残っているのはプロセステーブルのエントリです。これはパフォーマンスに影響しません。心配しないでください。
/proc/sys/kernel/pid_max
、他のすべてのPIDと同様にの対象となります。
psに現れるこれらのゾンビプロセスは何ですか?私は彼らを殺しますが、彼らは消えません!
ゾンビは死んだプロセスです。死者を殺すことはできません。すべてのプロセスは最終的に死に、そのプロセスはゾンビになります。彼らは死んでいるので予想されるリソースをほとんど消費しません!ゾンビの理由は、ゾンビの親(プロセス)がゾンビの終了ステータスとリソース使用統計を取得できるようにするためです。親は、wait()システムコールの1つを使用して、ゾンビが不要になったことをオペレーティングシステムに通知します。
プロセスが停止すると、その子プロセスはすべてプロセス番号1の子になります。これはinitプロセスです。Initは常に 子供が死ぬのを待っているので、子供はゾンビのままではありません。
ゾンビプロセスがある場合は、それらのゾンビが親によって待機されていないことを意味します(ps -lによって表示されるPPIDを見てください)。3つの選択肢があります。親プロセスを修正します(待機させます)。親を殺します。またはそれと一緒に暮らす。ゾンビはpsの出力で余分な行を1つ以上使用するため、それと一緒に生活することはそれほど難しくありません。
ソース:http : //www.linuxsa.org.au/tips/zombies.html
そして、あなたが殺し屋にいる場合、このスーパーユーザースレッドはあなたにとって興味深いかもしれません: ゾンビプロセスの親プロセスをどのように見つけますか?
それらを殺す必要はありません。
基本的な理解を深めるには:
すべてのプロセスは親プロセスの子です(initプロセスを除きますが、それについて心配する必要はありません)。
子プロセスの実行が終了しても、親プロセスがアクセスしたいデータ、通常は子プロセスの結果を説明する終了コードが含まれている可能性があります(成功しましたか?エラーですか?エラーコードは何ですか?)。
終了した子プロセスは、親プロセスが「リープ」または子プロセスを待機するまでゾンビプロセスとしてプロセステーブル内でハングアップします。これは、子プロセスが不要になったことをOSに伝える親プロセスです。必要な戻り値を読み取り、それで完了します。この時点で、システムはプロセステーブルのエントリをクリーンアップします。
このプロセスを強制終了する必要はありません。
とにかく(何らかの理由で)それを殺したい場合は、頭を撃つようにしてください、これは便利なコマンドです:
kill -HUP `ps -A -ostat,ppid | grep -e '^[Zz]' | awk '{print $2}'`
shoot at the head
。