根据Wikipedia,可以使用zsh命令:(){ :|:& };:停止前炸弹while (sleep 100 &!) do; done,该命令可能会产生sleep 100个进程,直到所有前炸弹进程都消失了。这看起来像魔术;它是如何工作的?我特别想知道“&!”到底是什么手段。

bash中的等效命令是什么样的?

最佳答案

分支炸弹起作用的原因是因为可以同时运行的进程数有一个有限的限制,而分支炸弹旨在填补这一限制。

因为您提供的Forkbomb代码在无法生成子进程的情况下就死了,所以父进程实际上并没有徘徊,但是,子进程不断创建新的Grand-Children事实使进程表保持完整。

因此,该睡眠解决方案旨在潜入某些仅在短时间内睡眠的过程,并且对于每个设法创建的睡眠过程,发生的 fork 炸弹事件较少。最终,睡眠过程自己填满了过程表, fork 炸弹死了。

一旦进程表已满,睡眠进程就可以终止while循环,并且一旦睡眠时间到,睡眠进程将死亡。问题解决了。

如前所述,zsh命令的重要部分是后台运行&,因此bash命令基本上与其他答案中给出的相同:

while (sleep 100 &) do; done

除非您想在睡眠时间内登出,否则我认为nohup/!部分并不重要,但是如果我做错了,我很乐意为您服务。

关于linux - “while (sleep 100 &!) do; done”在zsh中如何工作,如何在bash中复制?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/574695/

10-12 00:22