Explode!
Sep 5, 2016
今日发现了一个有趣的东西,叫做 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 个进程了.
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.