【发布时间】:2014-02-07 23:25:23
【问题描述】:
如果 Linux 内核自行删除会发生什么?会不会有一段时间因为 rm 或者用来删除的程序也被删除了而不能再删除文件了?
问候。
【问题讨论】:
-
正在从一个基本上做到这一点并设法从中恢复过来的直觉中阅读博客。相当有趣的阅读 - fendrich.se/blog/2010/08/27/…
标签: linux linux-kernel
如果 Linux 内核自行删除会发生什么?会不会有一段时间因为 rm 或者用来删除的程序也被删除了而不能再删除文件了?
问候。
【问题讨论】:
标签: linux linux-kernel
这个问题(除了跑题之外)本身有些错误,因为rm 不是内核的一部分,而是一个内置的 shell 或一个单独的用户级程序。诚然,rm 使用内核提供的系统调用,但这无关紧要。
内核本身是从压缩映像加载并锁定在 RAM 中的。在重新启动之前是否删除压缩映像并不重要(这将失败,引导加载程序会向您显示“vmlinuz not found”之类的消息)。您无法从 RAM 中删除内核(嗯,除了重新启动...)。
此外,在大多数情况下,在 Linux 下是否删除文件甚至包括正在运行的程序的可执行文件(如果我们可能暂时将内核称为“程序”)都无关紧要,因为删除文件只会删除链接,而不是文件。这是 Windows 的典型假设,即删除文件会造成邪恶的破坏性事情。
在类 Unix 系统下,完全可以在程序运行时删除(或替换)程序,而且根本不会引起任何问题。您将删除文件系统中的名称,仅此而已。任何打开的描述符在最后一个被关闭之前都将保持有效,原始文件对于任何较早获得句柄的观察者将保持原样,对于以后试图获取它的每个人来说,它将“消失”。
【讨论】: