文章目录

  • Linux文件删除原理
    • 文件的索引节点和链接
    • 文件删除的过程
    • 文件删除后是否能恢复

Linux文件删除原理

Linux是一个强大的操作系统,它提供了许多命令和工具来管理文件和目录。其中,最常用的命令之一就是rm,它可以用来删除不需要的文件或目录。

但是,你有没有想过,当你执行rm命令的时候,Linux是如何删除文件的呢?文件删除的原理是什么呢?本文将为你揭开Linux文件删除的秘密。

文件的索引节点和链接

要理解Linux文件删除的原理,我们首先需要了解两个重要的概念:索引节点链接

  • 索引节点Inode)是一个数据结构,它存储了文件的元数据,例如文件的大小、权限、所有者、时间戳、数据块位置等。每个文件都有一个唯一的索引节点号,用来标识这个文件。索引节点不包含文件的名字和内容。
  • 链接Link)是一个指向索引节点的指针,它包含了文件的名字和索引节点号。每个文件都至少有一个链接,即它在目录中的名字。一个文件可以有多个链接,即多个名字指向同一个索引节点。这样,一个文件就可以在不同的目录或位置出现。

可以使用ls -i命令来查看文件的索引节点号,例如:

上面的输出表示,当前目录下有5个文件,它们分别有不同的索引节点号。

可以使用ln命令来创建一个文件的链接,例如:

$ ln file1 link1
$ ls -i
131072 file1  131073 file2  131074 file3  131072 link1

上面的输出表示,我们创建了一个名为link1的链接,它指向了file1的索引节点。我们可以看到,它们有相同的索引节点号。

文件删除的过程

当我们执行rm命令删除一个文件时,实际上发生了以下几个步骤:

  1. Linux检查这个文件是否存在,并且是否有权限删除它。如果不存在或者没有权限,就会报错并退出。
  2. Linux减少这个文件的链接数i_nlink)值。这个值表示这个文件有多少个链接指向它。如果这个值大于0,就表示还有其他链接指向这个文件,那么就只删除当前链接,并退出。
  3. Linux检查这个文件是否被其他进程打开或使用。如果是,就增加这个文件的打开数i_count)值。这个值表示这个文件有多少个进程打开或使用它。如果这个值大于0,就表示还有其他进程使用这个文件,那么就只释放当前进程对这个文件的占用,并退出。
  4. Linux释放这个文件占用的数据块,并清空这个文件的索引节点。这样,这个文件就被彻底删除了,并且不占用任何磁盘空间。

可以用一个图来表示这个过程:

文件删除后是否能恢复

从上面的过程中我们可以看出,当我们删除一个文件时,并不一定会立即释放它占用的数据块和索引节点。只有当这个文件没有任何链接指向它,并且没有任何进程使用它时,才会真正删除它。

因此,在某些情况下,我们还是有可能恢复被删除的文件的,例如:

  • 如果我们在删除文件后,立即停止系统的工作,那么有可能这个文件的数据块还没有被其他文件覆盖,那么我们就可以使用一些工具来扫描磁盘,找到这些数据块,并重新组合成文件。
  • 如果我们在删除文件后,发现这个文件还被其他进程使用,那么有可能这个文件的索引节点还没有被清空,那么我们就可以使用一些命令来查看这些进程,并找到这个文件的索引节点号和数据块位置,并重新创建一个链接指向它。

当然,这些方法都不是百分之百可靠的,而且需要一定的技巧和经验。所以,我们在删除文件时,还是要谨慎小心,尽量不要删除重要的文件。如果不确定是否需要删除一个文件,可以先把它移动到一个临时目录,或者备份到其他地方。


把 永 远 爱 你 写 进 诗 的 结 尾 ~

【 Linux】文件删除原理相关推荐

  1. Linux文件删除原理

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

  2. 软硬链接、文件删除原理、linux中的三种时间、chkconfig优化

    第1章 软硬链接 1.1 硬链接 1.1.1 含义 多个文件拥有相同的inode号码 硬链接即文件的多个入口 1.1.2 作用 防止你误删除文件 1.1.3 如何创建硬链接 ln 命令,前面是源文件  ...

  3. Linux文件删除但空间不释放问题篇

    通常报磁盘不足的错误,有两个原因: •磁盘空间满:可以通过df -h命令查看磁盘的使用情况. •磁盘inode资源占用完:可以通过df -i命令查看,确认inode节点使用率: 如果是inode资源占 ...

  4. linux文件删除指定内容,Linux bash删除文件中含“指定内容”的行功能示例

    本文实例讲述了Linux bash删除文件中含"指定内容"的行功能.分享给大家供大家参考,具体如下: #!/bin/sh # 功能: 删除文件中含"指定内容"的 ...

  5. linux文件删除机制,Linux 文件删除机制

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

  6. linux 文件删除恢复

    恢复删除的文件 当Linux计算机受到***时,常见的情况是日志文件被删除,以掩盖***者的踪迹.管理错误也可能导致意外删除重要的文件,比如在清理旧日志时,意外地删除了数据库的活动事务日志.有时可以通 ...

  7. linux文件删除恢复

    1.  Linux运维人员学会备份至关重要 删除文件恢复 第一种情况: 当前系统有多个用户,其中一个用户对文件进行修改,则另一个用户对文件进行了删除操作,那么,这时候如何进行操作? 解决方法: 通过文 ...

  8. Java中执行Linux文件删除命令 rm -rf

    public static void deleteFile(String destDirPath) {String property = System.getProperty("os.nam ...

  9. linux文件删除漏洞,OpenStack Glance v1 API任意文件删除漏洞(CVE-2012-4573)

    发布日期:2012-11-08 更新日期:2012-11-13 受影响系统: openstack Glance Grizzly openstack Glance Essex (2012.1) open ...

最新文章

  1. 漫画 | Kubernetes带你一帆风顺去远航
  2. vector向量容器元素排序与查找
  3. python numpy array转置_python-Numpy Performance-向量及其转置的外积
  4. 另类方法激活你的Winodws 2008
  5. 基础集合论 第一章 2 集合
  6. Qt 定制字体选择 QFontComBobox
  7. BAT机器学习面试1000题系列(第1~305题)
  8. Atlas200 模组拆解
  9. 未注册小程序名称-小程序名称大全-周期更新未注册的好名字
  10. 如何转换视频格式?推荐这3款视频格式转换工具
  11. C++二维vector初始化大小方法
  12. 根据经纬度来计算旋转矩阵
  13. 鲁百年创新设计思维学习总结
  14. Atitit 团队激励 理论与措施 目录 1. 马斯洛需求理论 1 2. 赫兹伯格双因素理论 1 3. X理论y理论 1 4. 期望理论。。 1 1.马斯洛需求理论 激励方法 福利 奖金
  15. CSS学习03:CSS文本属性
  16. window文件批量转换 cwp批量转换jpg
  17. larval 策略模式
  18. android十大开源项目
  19. gg修改器偏移量修改_烧饼修改器地址偏移计算器功能使用说明
  20. cnpm的安装(超级详细版)

热门文章

  1. 【万字箴言】技术焦虑的减法与解法
  2. CSRF Tester工具使用教程
  3. 2bizbox自带的mysql版本_2BizBox免费ERP软件v3.1官方安装版
  4. 43个优秀的Swift开源项目推荐
  5. 8.Dubbo 原理
  6. Ubuntu安装配置
  7. linux内存寻址实例,Linux内存寻址
  8. visudo命令详解
  9. 遗传算法求解01背包问题
  10. 【密码学】传统密码:置换密码