linux 查看文件引用计数

一.在对文件操作的系统调用接口,并没有提供获取对文件引用计数的信息,所有想要获取此信息,有两种方法:


    1.在内核中添加一个系统调用.将内核中文件的引用count计数返回到应用层,这种比较麻烦.不推荐
    2.遍历整个系统中所有进程打开此文件的个数./proc/pid/fd/**, 以此来统计引用计数.lsof和fuser可能就是用的此方法,没有做考证.

例子如下:

june_hou@ubuntu:~$ ps
  PID TTY          TIME CMD
  936 pts/9    00:00:00 bash
 3586 pts/9    00:00:00 a.out
 4533 pts/9    00:00:00 ps
june_hou@ubuntu:~$ ls -al /proc/3586/fd/ -al
total 0
dr-x------ 2 june_hou june_hou  0 Jan 11 13:26 .
dr-xr-xr-x 9 june_hou june_hou  0 Jan 11 13:26 ..
lrwx------ 1 june_hou june_hou 64 Jan 11 13:26 0 -> /dev/pts/9
lrwx------ 1 june_hou june_hou 64 Jan 11 13:26 1 -> /dev/pts/9
lrwx------ 1 june_hou june_hou 64 Jan 11 13:26 2 -> /dev/pts/9
lrwx------ 1 june_hou june_hou 64 Jan 11 13:26 3 -> /home/june_hou/test.log
lrwx------ 1 june_hou june_hou 64 Jan 11 13:26 4 -> /home/june_hou/test.log

june_hou@ubuntu:~$ lsof test.log 
COMMAND  PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
a.out   3586 june_hou    3u   REG  252,7        0  357 test.log
a.out   3586 june_hou    4u   REG  252,7        0  357 test.log

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux中的文件系统使用了引用计数机制来跟踪每个文件引用数。当一个文件被打开时,引用计数增加;当一个文件被关闭时,引用计数减少。只有当引用计数达到零时,文件系统才会释放其在磁盘上占用的空间。 这种机制的好处是,只有当所有引用都已关闭时,文件系统才会删除文件。这意味着即使一个文件被删除了,只要还有一个或多个引用保持打开状态,该文件仍然可以通过这些引用访问,而不会真正从磁盘上删除。 利用引用计数机制,文件系统可以有效地管理文件,并节省磁盘空间。比如,在编辑器中打开一个文件时,文件系统会自动增加引用计数,当你保存并退出文件时,文件系统会减少引用计数。只有当所有编辑器中打开该文件引用都关闭时,文件系统才会释放该文件所占用的磁盘空间。 引用计数机制还可以避免误删除文件的情况。当一个文件被多个进程或应用程序引用时,如果某个进程错误地删除了文件,其他仍然在使用该文件的进程仍然可以继续访问该文件,因为引用计数不为零,文件系统并不会立即删除其磁盘上的副本。 总之,Linux使用引用计数机制来管理文件系统中的文件。只有当引用计数达到零时,即没有任何进程或应用程序引用文件时,文件系统才会从磁盘上释放该文件所占用的空间。这种机制可以有效地管理文件,并防止误删除文件的情况发生。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值