Jaromil在2002年设计了最为精简的一个Linux Fork炸弹,整个代码只有13个字符,在shell中运行后几秒后系统就会宕机:

:() { :|:& };:

这样看起来不是很好理解,我们可以更改下格式:

:()
{

:|:&

};
:

更好理解一点的话就是这样:

bomb()
{

bomb|bomb&

};

bomb

因为shell中函数可以省略function关键字,所以上面的十三个字符是功能是定义一个函数与调用这个函数,函数的名称为:,主要的核心代码是:|:&,可以看出这是一个函数本身的递归调用,通过&实现在后台开启新进程运行,通过管道实现进程呈几何形式增长,最后再通过:来调用函数引爆炸弹.因此,几秒钟系统就会因为处理不过来太多的进程而死机,解决的唯一办法就是重启。

预防方式

Fork炸弹的本质无非就是靠创建进程来抢占系统资源,在Linux中,我们可以通过ulimit命令来限制用户的某些行为,运行
ulimit -a
可以查看我们能做哪些限制:
ulimit -a

可以看到,-u参数可以限制用户创建进程数,因此,我们可以使用ulimit -u 20来允许用户最多创建20个进程。这样就可以预防bomb炸弹。但这样是不彻底的,关闭终端后这个命令就失效了。我们可以通过修改/etc/security/limits.conf文件来进行更深层次的预防

ulimit -SHn 65535

参考

https://blog.saymagic.tech/2015/03/25/fork-bomb.html
http://en.wikipedia.org/wiki/Fork_bomb

getwox

wiki
https://zh.wikipedia.org/wiki/{q}
github
https://github.com/search?q={q}
youtube
https://www.youtube.com/results?search_query={q}
baidu
https://www.baidu.com/#ie=UTF-8&wd={q}
jd
https://search.jd.com/Search?keyword={q}&enc=utf-8
taobao
https://s.taobao.com/search?q={q}
ip
http://freeapi.ipip.net/{q}
man
http://man.linuxde.net/{q}
weibo
http://s.weibo.com/weibo/{q}&Refer=STopic_box
bilibili
https://search.bilibili.com/all?keyword={q}&from_source=banner_search