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

Sha*_*ang 1 linux shell

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

如果你在shell中输入这个shell片段,你的系统似乎停止了,你知道为什么吗?

:() { :|:& }; :      #
Run Code Online (Sandbox Code Playgroud)

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

fal*_*tro 20

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

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

foo() {
  foo | foo &
}
foo
Run Code Online (Sandbox Code Playgroud)

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

  • 问答+1; 这里的问题闭门器有时似乎有点过于热心. (2认同)