这个bash脚本有多危险?

der*_*ek8 7 linux bash nohup delete-file

警告:危险的脚本.不要从命令行运行!

在公司的笑话电子邮件中看到这一点.有人可以向我解释为什么这个bash脚本比普通的'rm -rf'命令更危险吗?:

nohup cd /; rm -rf * > /dev/null 2>&1 &
Run Code Online (Sandbox Code Playgroud)

特别是,为什么使用nohup以及最后的元素是什么?

警告:危险的脚本.不要从命令行运行!

cho*_*oba 6

你可以尝试一些不那么"危险"的东西:

nohup cd /; find * >/dev/null 2>&1  &
Run Code Online (Sandbox Code Playgroud)

我明白了:

nohup: ignoring input and appending output to `nohup.out'
nohup: cannot run command `cd': No such file or directory
[2] 16668
Run Code Online (Sandbox Code Playgroud)

因此,nohup部分什么都不做,它只会触发错误.第二部分(原始脚本)尝试删除当前目录中的所有内容,并且无法停止Ctrl-C,因为它在后台运行.它的所有输出都被重定向到void,因此您没有看到任何"拒绝访问"进度消息.

  • @ derek8:是的.`nohup`需要一个命令,而不是内置的shell. (3认同)

Mar*_*c B 4

2>&1获取 stderr(文件句柄 2)并重定向到 stdout(文件句柄 1)。&其本身将 rm 命令置于后台。nohup 允许作业即使在启动它的人注销后也能继续运行。

换句话说,即使用户愤怒地退出终端/shell,此命令也会尽力清除整个文件系统。