:
从“lsof”输出我看到一个进程保持打开fd与(已删除)文件。奇怪的是,我仍然可以使用“ls”在文件系统中看到该文件。这是为什么?
感谢。
答案 0 :(得分:6)
删除文件时,文件系统上不会显示该文件。但是,很可能在同一位置创建具有相同文件名的另一个文件。
您可以查看lsof
和ls -i
中显示的节点编号,以检查它们是否真的是同一个文件。
答案 1 :(得分:4)
只要某个进程打开文件,就不会删除该文件。关闭文件时,内核首先检查打开文件的进程数。如果此计数达到0,则内核检查链接计数;如果为0,则删除文件的内容。
引用man unlink:
如果名称是文件的最后一个链接,但任何进程仍然有 打开文件的文件将一直存在,直到最后一个文件 引用它的描述符已关闭。