Linux下删除文件的原理

时间:2022-04-20 17:59:32

Linux下文件删除的原理

  1. Lniux下控制文件真正被删除的计数器

    Linuxlink的数量来控制文件删除的。只有当一个文件不存在任何link的时候,这个文件才会被删除。一般来讲,每个文件都有两个link计数器:i_counti_link

    • i_count的意义是当前文件使用者(或被调用)的数量
      当一个文件被某一个进程引用时,对应的这个值就会增加
    • i_nlink的意义是介质连接的数量(硬链接的数量)
      当创建文件的硬链接的时候,这个值就会增加

    可以理解为i_count是内存引用计数器,i_nlink是硬盘的引用计数器

  2. rm命令原理

    对于删除命令rm而言,实际上就是减少磁盘引用计数i_nlink

    Q:如果一个文件正在被某个进程调用,而用户却执行rm把文件删除了,那么会出现什么结果?当用户执行rm删除文件后,再执行ls或其他文件管理命令,无法再找到这个文件了,但是调用这个删除的文件的进程却在继续正常执行,依然能够从文件中正确的读取及写入内容,这又是为什么呢?

    Arm操作只是将文件的i_nlink减少了,如果没有其它的链接i_nlink就为0了。但是由于该文件依然被进程引用,因此,此时文件对应的i_count并不为0,所以执行rm操作,系统并没有真正的删除这个文件,只有当i_nlinki_count都为0的时候,这个文件才会被真正的删除。也就是说,必须要解除该进程对该文件的调用,才能真正的删除。

    Q:当文件没有被调用,执行了rm操作之后,还能找回被删除的文件吗?

    Arm操作只是将文件的i_nlink减少了,或者说置为0,实际上就是将inode的链接删除了,此时,并没有删除文件的实体(block数据块),此时,如果及时停止机器工作,数据是可以找回的,如果继续写入数据,那么新数据可能会被分配到被删除的数据的block数据块,文件就被真正的回收了。

  3. 实际遇到的问题

    Q:web服务器磁盘空间不够了,山除了所有无用日志还是显示磁盘空间不足,但是du -sh发现磁盘空间的占用率很小,这是为什么呢?是什么导致磁盘空间不足?

    A:删除命令只是删除了文件的一个i_nlink,但是其他进程正在使用这些log文件,apachetomat,重启这些服务就好啦!

Linux下删除文件的原理的更多相关文章

  1. (转载)在Linux下删除文件行末尾的^M符号方法

    (转载)http://www.xinfengit.com/200907/1433646.html 由于DOS下的编辑器和linux(linux教程 linux培训 )编辑器对文件行末的回车符处理不一致 ...

  2. 在Linux下删除文件及文件夹(rm)

    删除目录.文件 rm(remove) 功能说明:删除文件或目录.语 法:rm [-dfirv][--help][--version][文件或目录...]补充说明:执行rm指令可删除文件或目录,如欲删除 ...

  3. linux下删除文件夹的命令

    使用rm -rf 目录名字 命令即可 -r 就是向下递归,不管有多少级目录,一并删除-f 就是直接强行删除,不作任何提示的意思 eg 删除文件夹实例:rm -rf /var/log/httpd/acc ...

  4. linux下删除文件夹及下面所有文件

    使用rm -rf 目录名字 命令即可 -r 就是向下递归,不管有多少级目录,一并删除-f 就是直接强行删除,不作任何提示的意思 rm 不带参数 只能删除文件 rm test.txt mkdir /us ...

  5. linux下删除文件夹

    ---恢复内容开始--- 4月份左右接触linux,一直到现在,收获不多,原因是因为我没有足够的努力,其实这段时间以来我也很自责. 今天学习linux进程调度等知识,使用小红帽时,准备删除一个无用的文 ...

  6. linux下删除文件及文件夹命令

    一.删除空文件与文件夹 rm或rmdir 文件/文件夹 二.删除非空文件与文件夹 rm -rf 文件/文件夹

  7. (转)Linux下查看文件和文件夹大小 删除日志

    场景:在sts中执行自动部署时候maven提示No space left on device错误,后来经检查发现是磁盘空间满了,用下面的方法分析发现tomcat下面的logs目录占用了很大的空间,删除 ...

  8. linux 下删除乱码文件-乾颐堂

    在linux下删除文件,遇到特殊字符是一件非常头疼的事情. 1. 如果文件名带 ‘-’ 或者‘--’这样的字符 删除办法为:rm -- 文件名 如文件名为:-pythontab.tgz 如果用普通方法 ...

  9. Linux下查看文件和文件夹大小 删除日志

    场景:在sts中执行自动部署时候maven提示No space left on device错误,后来经检查发现是磁盘空间满了,用下面的方法分析发现tomcat下面的logs目录占用了很大的空间,删除 ...

随机推荐

  1. Chrome 及其 插件“个性化设置”备份

    Chrome版本发布时间表 2016.10.13 v54.0.2840.59  主题颜色由 蓝色 变为 灰色 2016.11.17 重新使用 Chrome 浏览器(v54.0.2840.99),并设置 ...

  2. jvm基础笔记

    名词解释: 三类参数:标准参数(可能不会变的,java -help列出来的就是这类的),X参数(非标准化参数),XX参数(扩展参数). 所有XX 参数都以-XX开始,但后面出现的+-就不同了.+代表激 ...

  3. C堆栈

    C堆栈实现的表达式求值 //Luangeng #include<stdio.h> #include<conio.h> #include<windows.h> #de ...

  4. 在C&num;中子线程如何操作主线程中窗体上控件

    在C#中,直接在子线程中对窗体上的控件操作是会出现异常,这是由于子线程和运行窗体的线程是不同的空间,因此想要在子线程来操作窗体上的控件,是不可能 简单的通过控件对象名来操作,但不是说不能进行操作,微软 ...

  5. Filter过滤器(1)

    Filter也称之为过滤器,它是Servlet技术中比较激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 ht ...

  6. 【福利】十一起,小冰科技所有UWP产品免费半个月

    从十月一日起(UTC协调世界时),至十月十五,小冰科技所有UWP产品免费半个月!!!!!! 注意是UTC哦,中国区,比UTC早8个小时,要等到十月一号早晨八点开始... 现在小冰科技旗下一共发布了 5 ...

  7. 去掉点击a标签时产生的虚线框

    1.直接给a 标签添加属性:onfocus="this.blur()" 即可 For Example: <a onfocus="this.blur()" ...

  8. P1613 跑路&lpar;倍增 &plus; floyd&rpar;

    https://www.luogu.org/problemnew/show/P1613 思路: 1.读入 2.建图 3.对于每一个点,向距离它 2^k 长度的点连一条长度为 1 的边 4.在新图上跑1 ...

  9. 那些年读过的书《Java并发编程实战》一、构建线程安全类和并发应用程序的基础

    1.线程安全的本质和线程安全的定义 (1)线程安全的本质 并发环境中,当多个线程同时操作对象状态时,如果没有统一的状态访问同步或者协同机制,不同的线程调度方式和不同的线程执行次序就会产生不同的不正确的 ...

  10. 查看MySQL的线程

    通过两张表查看MySQL的线程:information_schema.processlist 和 performance_schema.threads processlist是information_ ...