BASH fork 炸弹 简述
来源:互联网 发布:考研作息知乎 编辑:程序博客网 时间:2024/03/29 04:36
在 bash 中, 有个经典的递归脚本: Fork炸弹, 他是Jaromil 在 2002 年设计的, 一个精简的 fork炸弹的实现,整个程序从函数定义到调用仅仅包含 13 个字符, 好厉害!!!
-----------------------------------------------------------------------
.(){ .|.& };.
-----------------------------------------------------------------------
这串字符乍看上去根本就看不出个所以然来,下面让我们逐一解释一下它究竟在干些什么??
-----------------------------------------------------------------------
1 .()
2 {
3 .|.&
4 }
5 ;
6 .
-----------------------------------------------------------------------
第 1 行说明下面要定义一个函数,函数名为小数点,没有可选参数。
第 2 行表示函数体开始。
第 3 行是函数体真正要做的事情,首先它递归调用本函数,然后利用管道调用一个新进程(它要做的事情也是递归调用本函数),并将其放到后台执行。
第 4 行表示函数体结束。
第 5 行并不会执行什么操作,在命令行中用来分隔两个命令用。从总体来看,它表明这段程序包含两个部分,首先定义了一个函数,然后调用这个函数。
第 6 行表示调用本函数。
一旦运行 fork 炸弹,会以2的指数次幂的速度不断产生新进程,这会导致系统资源会被迅速耗光,最终除非重新启动机器,否则基本上就毫无办法了。为了防止这会造成太大的损害,我们可以使用 ulimit 限制每个用户能够创建的进程数
-----------------------------------------------------------------------
.(){ .|.& };.
-----------------------------------------------------------------------
这串字符乍看上去根本就看不出个所以然来,下面让我们逐一解释一下它究竟在干些什么??
-----------------------------------------------------------------------
1 .()
2 {
3 .|.&
4 }
5 ;
6 .
-----------------------------------------------------------------------
第 1 行说明下面要定义一个函数,函数名为小数点,没有可选参数。
第 2 行表示函数体开始。
第 3 行是函数体真正要做的事情,首先它递归调用本函数,然后利用管道调用一个新进程(它要做的事情也是递归调用本函数),并将其放到后台执行。
第 4 行表示函数体结束。
第 5 行并不会执行什么操作,在命令行中用来分隔两个命令用。从总体来看,它表明这段程序包含两个部分,首先定义了一个函数,然后调用这个函数。
第 6 行表示调用本函数。
一旦运行 fork 炸弹,会以2的指数次幂的速度不断产生新进程,这会导致系统资源会被迅速耗光,最终除非重新启动机器,否则基本上就毫无办法了。为了防止这会造成太大的损害,我们可以使用 ulimit 限制每个用户能够创建的进程数
- BASH fork 炸弹 简述
- BASH fork 炸弹 简述
- linux bash Shell脚本经典之Fork炸弹解析:() { :|:& };:
- fork 炸弹
- fork 炸弹
- fork炸弹
- fork炸弹
- fork 炸弹
- Fork 系统炸弹
- fork炸弹代码
- 【linux脚本】fork炸弹
- linux脚本】fork炸弹
- linux fork炸弹
- 经典fork炸弹
- Linux fork炸弹的分析
- Linux fork炸弹及其预防
- Linux 递归经典:fork 炸弹
- 经典的 Fork 炸弹解析
- BlurredDartboard(TCO2012Round2B-1)
- java连各种数据库的参数
- linux等待队列(转载)
- 几个linux常用的命令 sort,cut, uniq, split, tr
- jquery的语法基础
- BASH fork 炸弹 简述
- HeavyBooks(TCO2012Round2B-2)
- Extjs学习笔记4-propertyGrid
- mysql 添加用户和授权
- hdu1421n中选k个不相邻数的最小值
- inner join 和 left join
- 自行控制loadrunner的socket协议性能测试
- 2.4G无线遥控器鼠标解决办法
- 利用lipo编译合并iPhone模拟器和真机通用的静态类