为什么这个linux shell命令会暂停系统?

时间:2009-12-10 07:59:37

标签: linux shell

警告:恶意代码。不要试试这个。它出现在这里仅用于教育目的。

如果您在shell中键入此shell片段,系统似乎已停止,您知道原因吗?

:() { :|:& }; :      #

你唯一能做的就是重启你的系统.. 你能给我一些解释吗

1 个答案:

答案 0 :(得分:20)

这是一个无休止的递归。你正在定义一个名为':'的函数,它调用自身并将自己的输出传递给它自己的另一个实例,然后围绕它。由于'&',管道也在后台分叉并执行。最后':'实际上启动了调用(分号只是结束了上一个命令,它定义了函数,换行也会在这里执行)。

为了更清楚,这就是它的作用

foo() {
  foo | foo &
}
foo

它几乎是一个分叉炸弹,加上大量使用IPC资源。