shell 中命令“:() { :|:& }; :” 的含义是什么?

shell 中命令“:() { :|:& }; :” 的含义是什么?

我刚刚在网上的一个 Linux 论坛上遇到了这个命令,作者警告不要因为好奇而尝试这个命令。所以我的好奇心来了。shell 中的命令“:() { :|:& }; :”是什么意思?

答案1

这个叉子炸弹被描述为这里

在 bash 中,可以定义一个函数

function_name() { ... }

...函数的实现或主体在哪里

:(){ ... }

定义一个名为 的函数:

:|:

在其自身内运行该函数 - 即递归运行,并将其输出通过管道传输到其自身的另一个调用。

 & 

在后台运行上述命令。

这样我们:(){:|:&}就定义了这个函数

 ;

将定义函数的命令与同一行上的以下命令分开(如cd;pwd

 :

是开始运行新定义的函数的最终命令调用。


通常情况下,我希望对每个用户进程或其他资源的限制能够限制这种 fork 炸弹的影响。维基百科对此进行了描述拆除叉子炸弹


附录:写完这个答案后,我注意到这个问题与

其他相关问题

相关内容