“lsof” shows a file as (deleted) but I can still s

2020-06-22 09:15发布

in Linux 2.6.27:

From "lsof" output I see a process holding open fd with a (deleted) file. The strange thing is that I can still see the file in the file system using "ls". Why is that?

thanks.

标签: linux lsof
2条回答
一夜七次
2楼-- · 2020-06-22 09:28

The file is not deleted as long as some process has the file open. When a file is closed, the kernel first checks the count of the number of process that have the file open. If this count has reached 0, the kernel then checks the link count; if it is 0, the file's contents are deleted.

To quote from man unlink:

If the name was the last link to a file but any processes still have the file open the file will remain in existence until the last file descriptor referring to it is closed.

查看更多
做自己的国王
3楼-- · 2020-06-22 09:44

When a file is deleted it would not been seen on the file system. However, it is quite possible another file with the same file name is created on the same location.

You can check the node number shown in lsof and ls -i to check whether they are really the same file.

查看更多
登录 后发表回答