为什么'rm -rf / --no-preserve-root'不会自行删除并崩溃?

时间:2015-01-10 02:15:00

标签: rm

rm -rf / --no-preserve-root

此命令将删除磁盘中的所有内容。但如果它删除了所有内容(包括操作系统),内核和当前进程如何继续运行?

3 个答案:

答案 0 :(得分:5)

首先,不清楚 是否会成功删除文件系统中的所有内容。 (当然,大多数数据仍然在磁盘上,如果您可以通过磁盘/磁盘映像运行文件恢复工具,则可以将其恢复。)

但事情仍然有效的原因是rm命令实际上使用名为unlink的系统调用来删除文件。如果满足以下条件,那系统调用只会实际删除文件:

  1. 文件系统中没有其他(硬)链接到该文件。
  2. 什么都没有使用它。在这种情况下,“使用它”可以通过文件描述符读取/写入......或执行它。
  3. 当您像这样运行rm时,它实际上无法实际删除操作系统内核,rm可执行文件,shell的可执行文件和各种系统守护程序以及许多其他内容那些“在使用中”。如果你能够干净地关闭操作系统,那么这些文件中的许多文件都会被删除......但是这样做是不可能的,因为你已经删除了所有关闭脚本。

    但很可能你最终会得到一个无法正常启动的系统。

答案 1 :(得分:1)

  1. 在大多数UNIX系统上,当前打开的文件即使从文件系统中删除也不会被删除(直到它们被关闭)。

  2. 已加载到内存中的程序(例如正在运行的内核和rm二进制文件)并且不需要访问任何更多文件,不会因删除文件而受到影响。

答案 2 :(得分:0)

hahahhahh - 你做过吗?

OS n'东西在ram中运行。所以这可能不会完成。但它会损坏您的操作系统,无法修复。我不能说我曾尝试过它。

如果" rm"二进制(例如)在ram中加载。然后从磁盘上删除二进制文件,内核/操作系统没有理由将图像写回磁盘 - 它将会消失。

如果有人想看看会发生什么,我有一台可以报废的机器吗?