5

在 Linux 2.6.27 中:

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

谢谢。

4

2 回答 2

6

当一个文件被删除时,它不会在文件系统上看到。但是,很有可能在同一位置创建具有相同文件名的另一个文件。

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

于 2013-11-20T02:23:42.530 回答
5

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

引用 man unlink

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

于 2013-08-13T04:35:46.150 回答