GNU/Linux >> Linux の 問題 >  >> Linux

ゾンビプロセスを強制終了する方法

ゾンビはすでに死んでいるので、殺すことはできません。ゾンビをクリーンアップするには、親が待機する必要があるため、親を殺すとゾンビが排除されます。 (親が死んだ後、ゾンビは pid 1 に継承され、それを待ち、プロセス テーブルのエントリをクリアします。) デーモンがゾンビになる子を生成している場合は、バグがあります。デーモンは、その子が死んで wait になったときに通知する必要があります

ゾンビの親であるすべてのプロセスにシグナルを送信する方法の例 (これは非常に大雑把であり、意図しないプロセスを強制終了する可能性があることに注意してください。この種の大ハンマーの使用はお勧めしません):

# Don't do this.  Incredibly risky sledge hammer!
kill $(ps -A -ostat,ppid | awk '/[zZ]/ && !a[$2]++ {print $2}')

試してみました:

ps aux | grep -w Z   # returns the zombies pid
ps o ppid {returned pid from previous command}   # returns the parent
kill -1 {the parent id from previous command}

これは機能します:)


http://www.linuxquestions.org/questions/suse-novell-60/howto-kill-defunct-processes-574612/で見つけました

2) 別のユーザー (Thxs Bill Dandreta) からの素晴らしいヒント:ときどき

kill -9 <pid>

プロセスを強制終了しません。走る

ps -xal

4 番目のフィールドは親プロセスです。ゾンビの親をすべて殺すと、ゾンビは死にます!

4 0 18581 31706 17 0 2664 1236 wait S ? 0:00 sh -c /usr/bin/gcc -fomit-frame-pointer -O -mfpmat
4 0 18582 18581 17 0 2064 828 wait S ? 0:00 /usr/i686-pc-linux-gnu/gcc-bin/3.3.6/gcc -fomit-fr
4 0 18583 18582 21 0 6684 3100 - R ? 0:00 /usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.6/cc1 -quie

185811858218583 ゾンビです -

kill -9 18581 18582 18583

kill -9 31706

ゾンビを取り除きます。


次のコマンドで親プロセスを強制終了することにより、ゾンビ プロセスをクリーンアップできます:

kill -HUP $(ps -A -ostat,ppid | awk '{/[zZ]/{ print $2 }')

Linux
  1. Linuxでゾンビプロセスを強制終了する方法

  2. 親が初期化されているプロセスを強制終了する方法は?

  3. プロセスの子孫?

  1. コマンドを使用してLinuxでプロセスを強制終了する方法は?

  2. Linux:ゾンビ プロセスを見つけて強制終了する

  3. 親 1 で <defunct> プロセスを強制終了する方法

  1. Linuxでゾンビプロセスを見つけて殺す方法

  2. ゾンビプロセスとは何ですか?ゾンビプロセスを見つけて殺す方法は?

  3. 親プロセスの作業ディレクトリを設定するにはどうすればよいですか?