我刚刚在网上的一个 Linux 论坛上遇到了这个命令,作者警告不要因为好奇而尝试这个命令。所以我的好奇心来了。shell 中的命令“:() { :|:& }; :”是什么意思?
答案1
这个叉子炸弹被描述为这里
在 bash 中,可以定义一个函数
function_name() { ... }
...
函数的实现或主体在哪里
:(){ ... }
定义一个名为 的函数:
。
:|:
在其自身内运行该函数 - 即递归运行,并将其输出通过管道传输到其自身的另一个调用。
&
在后台运行上述命令。
这样我们:(){:|:&}
就定义了这个函数
;
将定义函数的命令与同一行上的以下命令分开(如cd;pwd
)
:
是开始运行新定义的函数的最终命令调用。
通常情况下,我希望对每个用户进程或其他资源的限制能够限制这种 fork 炸弹的影响。维基百科对此进行了描述拆除叉子炸弹
附录:写完这个答案后,我注意到这个问题与
其他相关问题