zoukankan      html  css  js  c++  java
  • linux文件删除原理

      每一个文件都有两个计数器:i_count和i_nlink,这两个计数器是用来干嘛的呢?当一个进程调用一个文件时这个文件的i_count就会加1,每当一个文件多一个硬链接时这个文件的i_nlink就会加1,最新创建的文件通常都会有一个i_nlink,即文件名本身,文件名也是一个硬链接,目录会有两个i_nlink,目录的名字算是一个硬链接,而目录内部还有一个硬链接,所以目录加起来是两个硬链接 ,如下所示:

    [root@client tmp]# mkdir test.dir
    [root@client tmp]# touch test.txt
    [root@client tmp]# ll -d test.dir/
    drwxr-xr-x 2 root root 6 Mar 19 16:30 test.dir/
    [root@client tmp]# ll  test.txt 
    -rw-r--r-- 1 root root 0 Mar 19 16:30 test.txt

     [root@client tmp]# ln test.txt /etc/test.txt.link
      [root@client tmp]# ll test.txt
      -rw-r--r-- 2 root root 0 Mar 19 16:30 test.txt

    而i_count并不会被直接显示出来

     当我们rm -rf删除一个文件或目录时,其实就是减少一个硬链接而已,如果真实的文件依然还有硬链接,那文件就没有真正删除成功,只有文件的i_nlink硬链接数量等于0时和i_count数量等于0时,文件才被真正删除。

    我之前就曾遇到一个类似的故障案例,就是由于i_count数量没有为0,而仅仅删除的硬链接,从而导致文件没有被删除成功,直到重启调用那个文件的进程之后,文件才得以被释放,I_count等于0,文件才真正被删除,空间才得以被释放。

     https://www.cnblogs.com/yizhangheka/p/11745787.html

  • 相关阅读:
    LwIP源代码文件目录解析
    规划2014!
    test
    111
    df
    第一次北京之行
    Android02--debug.keystore的注册信息
    Android01--开发环境搭建
    dfd
    1007
  • 原文地址:https://www.cnblogs.com/yizhangheka/p/11745774.html
Copyright © 2011-2022 走看看