一行命令搞废一个机器,吃掉一个机器所有的进程资源
:() { :|:& }; :
:(){ :|:; }; :
传说中的 fork bomb。这段字符定义了一个函数,这个函数名字是 : , 函数内容是 :|:& 即后台执行 :|: 。 定义完函数后,执行这个函数。
为了方便你理解,你可以吧其中的 : 全都替换成别的字符串,比如 abc,那么就得到
abc() { abc | abc & }; abc
所以 abc() { abc | abc & }; 先定义一个递归的后台调用自己的函数 abc, 分号后面的 abc 则真正的调用自己。
显然,这段代码会快速的,大量的产生后台任务,最终资源耗尽,导致系统失去响应。
摘自维基百科
:() # 定义函数,函数名为":",即每当输入":"时就会自动调用{}内代码
{ # ":"函数开始标识
: # 用递归方式调用":"函数本身
| # 并用管道(pipe)将其输出引至...
: # 另一次递归调用的":"函数
# 综上,":|:"表示的即是每次调用函数":"的时候就会生成两份拷贝
& # 调用间脱钩,以使最初的":"函数被杀死后为其所调用的两个":"函数还能继续执行
} # ":"函数结束标识
; # ":"函数定义结束后将要进行的操作...
: # 调用":"函数,"引爆"fork炸弹
参考