狂欢中的僵尸

狂欢中的僵尸

Bash 似乎不会创造僵尸。看起来进程被杀死后会立即收获。

我可以让 bash 制造僵尸吗?


我为什么要问:

我希望能够安全地终止子进程,或者kill -9如果它在一段时间内没有终止,则可以安全地终止它,但我不想意外地终止不是我的子进程的进程。僵尸进程通常使它变得非常简单并且竞争条件安全。

答案1

创建僵尸进程:

$ (sleep 1 & exec /bin/sleep 10)

这会替换运行的 shell,sleep 1/bin/sleep 10不会知道sleep 1进程已终止,因此会创建一个僵尸 10 秒。


我不确定您对杀死僵尸进程有何期望。僵尸进程已经死了,你无法杀死它。

事实上,你可以让僵尸进程消失,但是通过杀死它的父进程,而不是僵尸进程本身。

答案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>

相关内容