"lsof"将文件显示为(已删除),但我仍然可以在文件系统中看到它

use*_*732 5 linux lsof

在Linux 2.6.27中:

从"lsof"输出我看到一个进程保持打开fd与(已删除)文件.奇怪的是,我仍然可以使用"ls"在文件系统中看到该文件.这是为什么?

谢谢.

fef*_*efe 6

删除文件时,文件系统上不会显示该文件.但是,很可能在同一位置创建具有相同文件名的另一个文件.

您可以检查显示的节点号,lsofls -i检查它们是否真的是同一个文件.


moh*_*hit 5

只要某个进程打开了该文件,该文件就不会被删除。当文件关闭时,内核首先检查打开文件的进程数。如果此计数已达到 0,则内核会检查链接计数;如果为 0,则删除文件内容。

引用 man unlink

如果名称是文件的最后一个链接,但任何进程仍然打开该文件,则该文件将一直存在,直到最后一个引用它的文件描述符关闭。