Linux必会原理之文件删除的原理

Linux是通过link的数量来控制文件删除的,只有当一个文件不存在任何link的时候,这个文件才会被删除。一般来说,每个文件都有2个link计数器:i_count 和 i_nlink。

i_count的意义是当前文件使用者(或被调用)的数量,i_nlink 的意义是介质连接的数量(硬链接的数量);可以理解为i_count是内存引用计数器,i_nlink是磁盘的引用计数器。

当一个文件被某一个进程引用时,对应i_count数就会增加;当创建文件的硬链接的时候,对应i_nlink数就会增加。

对于删除命令rm而言,实际就是减少磁盘引用计数i_nlink。这里就会有一个问题,如果一个文件正在被某个进程调用,而用户却执行rm操作把文件删除了,那么会出现什么结果呢?当用户执行rm操作删除文件后,再执行ls或者其他文件管理命令,无法再找到这个文件了,但是调用这个删除的文件的进程却在继续正常执行,依然能够从文件中正确的读取及写入内容。这又是为什么呢?

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

图解

时间: 2024-08-25 10:31:58

Linux必会原理之文件删除的原理的相关文章

Linux下文件删除的原理

Linux文件删除的原理: Linux是通过link的数量来控制文件的删除的,只有当一个文件不存在任何link的时候,这个文件才会被删除,一般来说每个文件都有2个link计数器:i_count和i_nlink. i_count的意义是当前文件使用者(或被调用)的数量i_nlink的意义是介质连接的数量(硬连接的数量):可以理解为i_count是内存引用计数器,i_nlink是磁盘的引用计数器 当一个文件被某一个进程引用时,对应i_count数就会增加,当创建文件的硬连接的时候,对应i_nlink

(转)linux下文件删除的原理精华讲解(考试题答案系列)

linux下文件删除的原理精华讲解(考试题答案系列) 说明:本文为老男孩linux培训某节课前考试试题及答案分享博文内容的一部分,也是独立成题的,你可以点下面地址查看全部的内容信息.http://oldboy.blog.51cto.com/2561410/791245 5.描述linux下文件删除的原理(记时3分钟)<?xml:namespace prefix="o"> ?xml:namespace> Linux文件删除原理:     Linux是通过link的数量来

Linux文件属性之Linux文件删除重要原理详解

Linux下文件删除的原理 只要dongdaxiafile(源文件).服务进程.dongdaxiaflie_hard_link(硬链接文件)三个中的任意一个存在文件不会被删除. 原文地址:https://www.cnblogs.com/dongxu2019/p/11461293.html

描述Linux下文件删除的原理(计时3分钟)

Linux是通过link的数量来控制文件删除的,只有当一个文件不存在任何link的时候,这个文件才会被删除.一般来说,每个文件都有2个link计数器:i_count 和 i_nlink. i_count的意义是当前文件使用者(或被调用)的数量,i_nlink 的意义是介质连接的数量(硬链接的数量):可以理解为i_count是内存引用计数器,i_nlink是磁盘的引用计数器. 当一个文件被某一个进程引用时,对应i_count数就会增加:当创建文件的硬链接的时候,对应i_nlink数就会增加. 对于

[svc]ext4文件删除&amp;访问原理

文件名信息存放在哪里? LINUX的文件名是存在父目录的block里面,并指向这个文件的inode节点,这个文件的inode节点再标记指向存放这个文件的block的数据块.我们删除一个文件,实际上并不是清楚inode节点和block的数据.只是在这个文件的父目录里面的block删除这个文件的名字,从而使这个文件名消失,并且无法指向这个文件的 inode节点,当没有文件名指向这个inode节点同时没有进程调用的时候,这个inode和下面的block是无主的.在磁盘检查或者有内容写入的时候会是否释放

linux基础学习-9.6-文件删除原理

1.文件删除原理 rm 删除文件删除的只是文件名 2.控制文件删除:以下两个条件同时具备才生效 1.文件的硬链接数,有一个硬链接i_link +1 减少一个硬链接,i_link-1 2.是否有进程占用使用这个文件,有一个进程占用这个文件,i_count+1 当没有进程调用时i_count=0 当i_link=0并i_count=0时,文件被删除 3.文件删除,磁盘空间不释放的原因 1.hardlink 2.另一个进程还在使用这个文件 3.磁盘空余空间维护出现问题 ln 源 目标 [[email 

文件删除后且被进程占用如何找回

在执行该操作时应该搞明白文件删除的原理与符号链接和硬链接的知识 inode/block区别及解释 1.在linux系统中,连接分为两种,一种是被称为硬链接(hard link),另一种被称为符号连接或是软连接(symbolic link) 2.默认不带参数的情况下,ln命令创建的是硬链接,带-s参数的ln命令创建的是软连接 3.硬链接与源文件的inode节点号相同,而软连接的inode节点号与源文件不同 4.Ln命令不能对目录创建硬链接,但是可以创建软连接,而且目录的软连接经常会被用到 5.删除

linux下的文件删除原理

Lniux下控制文件真正被删除的计数器 Linux是link的数量来控制文件删除的.只有当一个文件不存在任何link的时候,这个文件才会被删除.一般来讲,每个文件都有两个link计数器:i_count和i_link i_count的意义是当前文件使用者(或被调用)的数量 当一个文件被某一个进程引用时,对应的这个值就会增加 i_nlink的意义是介质连接的数量(硬链接的数量) 当创建文件的硬链接的时候,这个值就会增加 可以理解为i_count是内存引用计数器,i_nlink是硬盘的引用计数器 rm

linux 文件删除过程浅析

1.Linux文件删除原理 Linux是通过link的数量控制文件删除的,只有当文件不存在任何链接时,该文件才会被删除,一般每个文件有两个link计数器: i_count 和 i_nlink,从VFS inode结构体中可以找到: struct inode { struct hlist_node i_hash; /* hash链表的指针 */ struct list_head i_list; /* backing dev IO list */ struct list_head i_sb_list