我在explainshell.com上阅读了一些命令并发现了一个有趣的命令:
:(){ :|:& };:
Run Code Online (Sandbox Code Playgroud)
目前我在OSX,我能找到的唯一参考是在builtin手册页 ( man builtin) 上,但这没有帮助,因为它只说明它是外部、cshell 还是 sh 命令。
Command External csh(1) sh(1)
! No No Yes
% No Yes No
. No No Yes
: No Yes Yes
Run Code Online (Sandbox Code Playgroud)
那么,执行有:什么作用呢?
在终端上我没有输出:
$ :
$
Run Code Online (Sandbox Code Playgroud)
Joh*_*ohn 10
在这种情况下,:不是命令,而是您定义的函数的名称。该命令:(){ :|:& };:就是所谓的“forkbomb”——它是一个命令序列,它定义了一个名为 的函数:,告诉外壳该函数包括调用:、将输出管道传送到 的另一个实例:,以及使第二个实例成为后台。最后的;:序列终止函数的定义,然后调用它。每次调用都会:导致另外两个副本:运行,与 shell 生成它们的速度一样快。
这将导致耗尽所有系统资源,如果没有设置进程限制,最终会导致系统变慢或崩溃。
| 归档时间: |
|
| 查看次数: |
265 次 |
| 最近记录: |