今日发现了一个有趣的东西,叫做 fork bomb

:(){ :|: & };:

PS:请不要把这个命令丢进终端里面.

在执行之后你的终端会疯狂 fork 进程,直到你的电脑爆炸/强制关闭为止.

这个命令的含义是:

:() 代表你定义了一个叫做 : 的函数.

{:|: &} 这里定义 : 函数会首先执行他自己,然后把输出 pipe 到 : 函数,然后放到后台运行.

;: 这里 ; 用来分割命令,然后后面的 : 用来启动这个函数.

其中, & 会 fork 一个 subshell,所以这就成为了一个 fork bomb.

那么,怎么反制呢?

一个简单的办法就是上限制,让他 fork 不了就好了.

#vim /etc/security/limits.conf
username hard nproc 300
groupname hard nproc 300

其中 300 便是最大进程限制.

当然我们还可以用 ulimit

ulimit -u 30

这样每个用户最多就只能创建 30 个进程了.


Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.