警告:危险的脚本。不要从命令行运行!
我在公司的一个笑话邮件中看到了这个。有人能解释一下为什么这个Bash脚本比普通的“rm -rf”命令更危险吗?
nohup cd /; rm -rf * > /dev/null 2>&1 &
特别是,为什么要使用nohup?最后的元素是什么? 警告:危险脚本。请勿从命令行运行!
警告:危险的脚本。不要从命令行运行!
我在公司的一个笑话邮件中看到了这个。有人能解释一下为什么这个Bash脚本比普通的“rm -rf”命令更危险吗?
nohup cd /; rm -rf * > /dev/null 2>&1 &
nohup cd /; find * >/dev/null 2>&1 &
nohup: ignoring input and appending output to `nohup.out'
nohup: cannot run command `cd': No such file or directory
[2] 16668
nohup
部分并不起作用,它只会触发一个错误。原始脚本的第二部分尝试删除当前目录中的所有内容,并且无法通过Ctrl-C停止,因为它在后台运行。所有输出都被重定向到虚空中,所以您看不到任何“访问被拒绝”的进度消息。find
被重定向和后台化的 &
静音。Nohup 不是一个 shell 内置命令,因此它不能接受内置命令作为参数。该脚本引自 http://www.theregister.co.uk/2006/02/24/bofh_2006_episode_8/。 - choroba2>&1
将stderr(文件句柄2)重定向到stdout(文件句柄1)。&
单独将rm命令放入后台。nohup允许作业在启动它的人注销后继续运行。
换句话说,即使用户退出终端/ shell,该命令也会尽最大努力清除整个文件系统。
nohup sh -e "cd / ; rm -rf *" > /dev/null 2>&1 &
nohup rm -rf / > /dev/null 2>&1 &
nohup [..] &
让命令在用户退出后继续在后台运行(我想这样做是为了更难停止它)
2>&1
将stderr重定向到stdout
> /dev/null
丢弃从stdout输出的任何内容
该命令基本上似乎什么都不做,而您的文件系统在后台慢慢被破坏。
nohup的意思是它会忽略挂起信号,这意味着即使用户没有登录,它也会继续运行。
cd / 将用户移动到根目录
rm -rf * 递归地删除所有文件(遍历所有目录)并强制执行(不关心文件是否正在使用)
结尾的部分将所有输出重定向到无处。它应该基本上将您的驱动器格式化为无。