Write the Code. Change the World.

2月 23

今天在知乎看到这样一条bash命令(在类UNIX系统的shell环境下运行):

在终端执行完之后,我的Linux果然在一瞬间死掉了,风扇狂转…

查资料得:

这东西叫”Fork bomb”,2002年由Jaromil设计,通过不断fork出新的进程,一生二,二生四,四生八…然后指数爆炸,迅速耗光电脑资源。

我们来分析一下,把这条命令分解:

简单地说:1-4行定义了一个函数,函数名就是一个冒号,没有参数,这个函数做这样的一个事情:调用自身,然后用管道开一个新进程,这个进程也是调用自身,并放到后台执行。第5行用来分隔上下两条子命令,上面定义冒号函数,下面调用冒号函数。

在系统中成功“引爆”fork炸弹后,我们可重启来使系统恢复正常运行;而若要以手动的方法使fork炸弹“熄火”,那前提就是必须杀死fork炸弹产生的所有进程。为此我们可以考虑使用程序来杀死fork炸弹产生的进程,但由于这一般需要创建新进程,且由于fork炸弹一直在探测与占用进程槽与内存空间,因而这一方法几乎不可能实现,而且用kill命令杀死进程后,释放出的进程槽又会被余下的fork炸弹线程所产生的新进程占用。

参考资料:http://zh.wikipedia.org/wiki/Fork%E7%82%B8%E5%BC%B9

发表评论

电子邮件地址不会被公开。 必填项已用*标注

活捉 43 条