【问题标题】:"lsof" shows a file as (deleted) but I can still see it in file system“lsof”将文件显示为(已删除),但我仍然可以在文件系统中看到它
【发布时间】:2013-08-14 13:46:23
【问题描述】:

在 Linux 2.6.27 中:

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

谢谢。

【问题讨论】:

    标签: linux lsof


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      引用unlink的人:

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

      【讨论】:

      • 这表示取消链接总是删除名称,有时会删除文件。如果您可以在ls 中看到该文件,则该名称尚未被删除。所以这不是正在发生的事情。您可以通过在一个进程中打开一个文件,然后在另一个进程中将其删除并执行ls 来测试这一点。
      猜你喜欢
      • 1970-01-01
      • 2017-05-14
      • 1970-01-01
      • 2022-10-16
      • 2021-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-31
      相关资源
      最近更新 更多