删除所有内容:# rm -rf /

删除所有内容:# rm -rf /

只是想知道,当你删除正在运行的 Linux 系统上的每个文件时会发生什么?

# rm -rf /

答案1

这里有:视频Ubuntu 方式CentOS 方式死于rm / -rf

答案2

我将其翻译为:如何删除某人仍在使用的文件?

在 Linux 上,文件系统的一部分位于 RAM 中,另一部分位于磁盘中。当进程 A 打开一个文件并保持打开状态(例如共享库)时,进程 A 会获取该文件的“inode”副本。这是告诉系统文件在磁盘上的位置的数据结构。

现在我们有两个 inode,一个在磁盘上,一个在 RAM 中。如果第二个进程请求同一个文件,我们将有三个 inode。现在第二个进程删除了 inode。这样就剩下 1 个 inode:进程 A 的 inode。

这意味着进程 A 仍然可以看到文件(并读取它),即使其他人都看不到(因为磁盘上的 inode 已被删除,第二个进程早已消失)。进程 A 终止后,最后剩余的 inode 将被删除,文件实际上已消失。

Linux 通过下列方式利用此功能:

  1. 您可以备份任何文件,即使是当前正在使用的文件。
  2. 您可以在正在运行的系统中安装升级,而不会破坏任何东西(嗯......几乎;有一些极端情况,但通常情况下,它是有效的)。
  3. 您可以创建一个文件,然后删除它并使用它。其他任何进程(以及病毒等)都无法查看、读取或更改该文件。它是您的。最重要的是,当您的进程结束时,该文件会自动删除。这有多酷?

那么会发生什么?一开始不会发生太多。最终,错误将被记录到已删除的日志文件中,某些文件无法找到。如果您尝试运行新命令,它将失败。停止进程将使其陷入困境。最终,您将得到一个无法重新启动或关闭的挂起系统,因为这些命令不再存在。

答案3

您可以自己测试一下,只需在虚拟机中安装 Linux 即可。别忘了您需要sudosu才能使其正常工作。

相关内容