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

xsz*_*nix 5 linux

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

# rm -rf /

Aar*_*lla 18

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

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

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

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

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

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

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


whi*_*ark 10

你在这里:Ubuntu 方式CentOS 方式的视频被rm / -rf.