🙊
🙊
🙊
🙊
关于作者
搜索文档…
🙊
🙊
🙊
🙊
关于作者
个人简历
联系作者
运维面试必问
RAID 磁盘阵列
MBR 与 GPT 分区
Linux 内核优化
关系型数据库
关系型数据库基本原理
SQL 基本语法
Linux运维学习笔记
计算机网络基础知识
Linux 系统启动过程
Linux 命令基本格式
Linux 文件删除原理
Linux 命令行判断GPT和MBR分区
Linux 目录结构说明
Linux 查看命令帮助信息
Linux Yum 命令
Linux Apt 命令
Linux 运维管理
Linux 硬件管理
Linux 软件管理
Linux 磁盘管理
Linux 系统管理
Linux 网络管理
Linux 用户和组管理
Linux 文件与目录管理
Linux 文件压缩与解压缩管理
Linux SSL证书自动更新管理
系统安全加固
Linux 操作系统加固
Windows 操作系统安全加固
Password 安全加固
OpenSSL 安全加固
NFS 服务安全加固
Rsync 服务安全加固
IIS 服务安全加固
PHP 语言环境安全加固
Apache 服务安全加固
Nginx 服务安全加固
Tomcat 服务安全加固
MySQL 服务安全加固
PostgreSQL 服务安全加固
Redis 服务安全加固
MongoDB 服务安全加固
暴力破解攻击和防御
Linux 系统故障排查
Linux 系统重置密码方法
Linux 系统误操作修改目录权限为 777 修复方法
Windows 系统故障排查
Windows 和 Windows Server 中启用/禁用 SMBv1、SMBv2 和 SMBv3
Windows10建立映射网络驱动器报错,无法挂载共享文件系统,解决办法
运维工具使用
常用 Git 命令简介及使用
常用 SVN 命令简介及使用
常用 Vi / Vim 文本编辑工具简介及使用
国内常用加速源使用及配置
软碟通制作U启动和再生龙恢复Linux系统及备份
常用JetBrains系列IDE快捷键
运维环境搭建
CentOS 7 安装与优化
CentOS 安装高版本Node.js
CentOS 升级安装Python2.7.X
CentOS 安装 Python3.8.X
CentOS 安装 PHP7.4.X
CentOS 安装 Mysql 8.0
CentOS 安装 Zabbix 5.0
Windows Server 部署 IIS
Cronsun 任务管理器部署
Teltport 堡垒机部署
Jump Server 堡垒机搭建及使用
CI & CD 持续集成部署
ELK6.5.0+Filebeat 日志系统部署
中间件教程学习
Nginx 极简教程
Nginx 安装
Nginx 配置
Nginx 问题集
Mysql 教程
Mysql 运维
Mysql 原理
Redis 教程
Redis 持久化
Redis 复制
Redis 哨兵
Redis 集群
Redis 运维
PostgreSQL 教程
H2 教程
SqLite 教程
Linux 命令大全
Linux 运维教程
Shell 教程
Java 教程
Python 全栈教程
nftables 中文教程
Docker -入门到实践
Docker 入门教程
Prometheus 监控
Kubernetes中文指南/云原生应用架构实践手册
ELKstack 中文指南
Elasticsearch 权威指南
Python 入门指南
Nginx 入门教程
MySQL 入门教程
Go 语言高级编程
Python 爬虫教程
Github 漫游指南
Jenkins 中文教程
数据库中间件 flyway
Nosql 数据库
常用工具快捷键
Windows10常用快捷键大全
PyCharm 使用技巧
由
GitBook
提供支持
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的时候,这个文件才会真正被删除。也就是说,还需要解除该进程的对该文件的调用才行。
以上讲的i_nlink及i_count是文件删除的真实条件,但是当文件没有被调用时,执行了rm操作删除文件后是否还可以 找回被删的文件呢?
前面说了,rm操作只是将文件的i_nlink减少了,或者说置0了,实际就是将文件名到inode的链接删除了,此时,并 没有删除文件的实体即(block数据块),此时,如果及时停止机器工作,数据是可以找回的,如果此时继续写入数 据,那么当新数据就可能会被分配到被删除的数据的block数据块,此时,文件就会被真正的回收了,那时就是神仙 也没有办法了。
Linux运维学习笔记 - 以前
Linux 命令基本格式
下一个 - Linux运维学习笔记
Linux 命令行判断GPT和MBR分区
最近更新
1yr ago
复制链接