为什么这个命令会导致 Linux 崩溃

为什么这个命令会导致 Linux 崩溃

可能重复:
这个神秘的 bash 命令是什么意思?

为什么这个命令会导致 Linux 崩溃?

:(){ :|:& };: 

答案1

这被称为叉子炸弹

答案2

该命令定义了一个名为 的函数:,当调用该函数时,它会在后台生成两个副本并退出。这两个副本执行相同的操作,导致在一秒钟内产生大量进程,并无限期地持续下去。

下面正是相同的函数,但名称更易读:

foo() {
    foo | foo &
}

foo

答案3

它会无休止地将进程分叉到后台。一段时间后,进程就太多了,每个进程都占用少量系统资源。

答案4

从技术上讲,系统并没有崩溃。系统崩溃会导致错误退出。它也没有挂起。这意味着系统正在执行某项操作但尚未返回。在特定情况下,它运行正常。只是响应时间太长,因为计算机实现的资源是有限的。因此,无限的进程和有限的资源导致无限的响应时间。

相关内容