Bashはゾンビを生成しないようです。プロセスが終了した直後に収穫されるようです。
Bashにゾンビを生成させることはできますか?
私が尋ねる理由:
kill -9
子プロセスを安全に終了したり、しばらく終了していない場合は安全に終了したいのですが、私の子プロセスではないプロセスを誤って終了したくありません。ゾンビプロセスは通常、競争条件から非常にシンプルで安全です。
答え1
ゾンビプロセスを作成します。
$ (sleep 1 & exec /bin/sleep 10)
これは、プロセスが終了したことを知らずに、sleep 1
10秒間ゾンビを生成する実行中のシェルを置き換えます。/bin/sleep 10
sleep 1
ゾンビプロセスを殺して何を期待しているのかわかりません。ゾンビプロセスはすでに死んでいるので殺すことはできません。
実際、ゾンビプロセス自体を殺すのではなく、親プロセスを殺すと、ゾンビプロセスが消える可能性があります。
答え2
あまり面白くない答え:
$ (A=$BASHPID && ( kill -STOP $A ))
[1]+ Stopped ( A=$BASHPID && ( kill -STOP $A ) )
$ ps -C bash
PID TTY TIME CMD
29453 pts/0 00:00:00 bash
29593 pts/0 00:00:00 bash
29594 pts/0 00:00:00 bash <defunct>