登录 | 注册

经典的 Fork 炸弹解析

首页 > 程序开发 > Linux 2018-01-12 17:15:30 浏览次 共 条评论

收藏赞(分享

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

  1. :(){:|:&};: 

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

  1. :() 
  2.     :|:& 
  3. }; 

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

  1. bomb() 
  2.     bomb|bomb& 
  3. }; 
  4. bomb 

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

Bomb一下

秉着不作不死的心态,我们也来运行一下,于是我将矛头指向云主机,,我使用了国内的一个2G内存的云主机,首先在本地开启两个终端,在一个终端连接云主机后运行炸弹,秒后再尝试用另外一个终端登录,效果可以看下面Gif图:

看,运行一段时间后直接报出了-bash: fork: Cannot allocate memory,说明内存不足了。并且我在二号终端上尝试连接也没有任何反应。因为是虚拟的云主机,所以我只能通过主机服务商的后台来给主机断电重启。然后才能重新登录:

免责声明:本文来源于,由网友提供或网络搜集,仅供个人研究、交流学习使用,不涉及商业盈利目的。如有版权问题,请联系本站管理员予以更改或删除。优知网会定期发布程序开发相关趋势文章,包括 PHP Android IOS Java C/C++ 软件测试 大数据 Linux 全栈开发 等领域,敬请关注!

分享到
人收藏5 收藏
 
 
 

咨询中心

优就业微信扫一扫
微信扫一扫

400-650-7353

加入官方微博