LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 892|回复: 8

请问命令 :(){ :|:& };: 会运行什么

[复制链接]
发表于 2007-4-27 19:26:03 | 显示全部楼层 |阅读模式
听说在shell下
  1. :(){ :|:& };:
复制代码
是一条危险的命令,我好奇运行了,只见硬盘狂转,按任何键都没反应,只好关了电源。重开机后没有发现异样。

请问这个命令是干什么的?
发表于 2007-4-27 20:03:21 | 显示全部楼层
fork炸弹。

){...}构建一个名为:的函数,花括号中是其定义,也就是递归地调用函数自身,同时输出到管道,再次调用自身,这样进程数目的增长是指数级的。&是将调用放入后台,保证即使杀死父进程,子进程也不会死。;结束函数定义。最后一个:正式开始调用这个函数。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-4-27 20:47:24 | 显示全部楼层
谢谢!有初步了解了。
只是吃资源,导至死机,不会别的危害吧?
回复 支持 反对

使用道具 举报

发表于 2007-4-27 21:00:12 | 显示全部楼层
不小心在学校的服务器上用了~~~
回复 支持 反对

使用道具 举报

发表于 2007-4-27 21:00:28 | 显示全部楼层
不会,但没有什么好的解决办法,不重启的话,SysRq不知道行不行,就是alt+sysrq(print screen)+i,三键的组合,发送SIGKILL给除init外的所有进程。前提是内核支持SysRq并启用了,大都发行版都默认都可以的。
回复 支持 反对

使用道具 举报

发表于 2007-4-27 23:41:33 | 显示全部楼层
一般用户会被 limited 的,只要不是root,也许还不会死的那么惨。。。。:)。。
回复 支持 反对

使用道具 举报

发表于 2007-4-28 00:36:50 | 显示全部楼层
我第一次尝试这个命令的时候,特意新建了一个普通用户,死得一样很惨,不到一秒,在我反应过来之前系统就毫无反应了。

下次关机之前再试试,同时用 doom3d 兄的方法看看能不能重生
回复 支持 反对

使用道具 举报

发表于 2007-4-28 09:25:15 | 显示全部楼层
确认/proc/sys/kernel/sysrq 值为1时三键可用
回复 支持 反对

使用道具 举报

发表于 2007-4-28 17:58:49 | 显示全部楼层
终于明白这条语句的意思了,居然声明名字为:函数,真是无语了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表