Linux 文件知识 补充

目录与文件

路径解析

目录亦是文件,存文件与 inode 号的映射关系所以,访问文件,需打开当前目录。

但是,我们要访问当前目录,去哪找?也就是说,当前工作目录的 inode 去哪找?想向上想,我们打开当前目录,要从上级目录找,那又如何找?

实际上,我们打开一个文件,要把路径中所有目录全部解析,从根目录开始,这个过程叫做 Linux 路径解析访问文件,本质是进程访问,进程的 CWD 提供路径。

最开始的路径从哪来?根目录,其下又有许多缺省目录,所以,你新建的任何文件,都是在系统指定目录下新建的,由系统和用户共同构建 Linux 路径结构。

路径缓存

每次访问文件,都从头开始,未免太慢!所以 Linux 会缓存历史路径结构有个维护树状路径结构的内核结构体叫:struct dentry 。

所以当你打开一个目录,第一次会比较慢,后面就会变快。

挂载分区

我们通过 inode 号在指定分区找文件,但是我们知道 inode 是不能跨分区的,那我们怎么知道我们在哪个分区呢?

路径解析过程中,内核会通过挂载点切换文件系统(分区),inode 只在当前文件系统内有效,无需跨分区识别。

什么意思呢?我们假设一个一个分区是一栋栋由 "连廊"(挂载点)连接的的 "楼",inode 是楼里面的房间号。根目录永远属于系统的主分区(我们假设叫 A 楼),当内核根据用户需求行动,在该分区中找到了 home 目录,发现它是一个挂载点,也就是说:home 是 A 楼到 B 楼之间的连廊。所以内核在接下来的操作,就来到了另一个分区进行。

所以,inode 只在 "当前这栋楼" 里是唯一的,内核永远是先确定 "在哪栋楼",再用 inode 找房间,自然就不存在跨分区的问题了!

软硬链接

硬链接

在 Linux 中,其实可以让多个文件名对应同一个 inode ,这种操作叫做硬链接。

我们使用 ln 命令可以将两个文件硬链接起来,当我们查看它们的 inode 号,就会发现完全一样:

从硬链接的规则其实不难想到一种情况:创建硬链接时,目标文件不能预先存在。

所以硬链接其实是一种备份操作。

内核会记录一个文件的硬链接数:

所以删除一个文件时会干两件事:1.在目录中将对于的记录删除。2.将硬链接数 -1 ,之后如果为 0 ,则释放对应磁盘空间。

当我们创建一个空目录,会看到:

我们以前就知道,. 表示当前目录,. . 表示上级目录。现在再看它们的硬链接数,你能想到什么呢?. 在上级目录有一份,在自己里面有一份,所以硬链接数为 2,而**. .**相同,但是多了其下级目录里面的一份,所以硬链接数为 3。

软链接

硬链接是通过 inode 引用另一个文件,而软链接是通过名字引用另一个文件。

软链接产生的新文件和被引用文件的 inode 是不一样的,我们用一个例子来搞清楚软链接的作用:

code.exe 是 code.c 形成的可执行文件,运行之后打印:hello I'm code.c 。

通过 code 引用 code.exe ,当我们运行 code ,结果和运行 code.exe 完全一样!

可能到这还有点难以理解,但是,联想一下我们的 Windows 电脑,电脑的桌面上有很多软件的图标,当我们双击图标,就可以打开对应的文件。但是我们删除图标,真正的文件并不会被删除,因为那只是一种快捷方式。那么,软链接,不就是 Linux 创建快捷方式的操作吗!!!

相关推荐
强哥聊算力1 小时前
《算力江湖·英伟达传奇》第七集:ChatGPT出现前夜,英伟达发生了什么?
服务器·人工智能·算法·ai·chatgpt·gpu算力
Initialize-le1 小时前
Nginx 504 超时、499 一堆?网关排查法
运维·nginx
砚凝霜4 小时前
【软考信息安全】第二十二章 Web服务器安全分析与增强——Apache与IIS
服务器·前端·安全
Android系统攻城狮4 小时前
Linux Gstreamer深度解析之gst_audio_ring_buffer_delay调用流程与实战(七十二)
linux·运维·服务器·gstreamer音视频·音视频进阶
快乐的韭菜根根4 小时前
ubuntu 安装slurm并配置
linux·运维·ubuntu
数字新视界4 小时前
机房动环监控提升运维效率
大数据·服务器·数据库·动环监控系统·动力与环境监控系统
U-Mail邮件系统5 小时前
自建邮箱服务器有哪些软件?三款主流邮件服务器软件推荐
运维·服务器
倒头就睡的小比特6 小时前
Linux基础指令3
linux·服务器
Smoothcloud润云6 小时前
PyTorch推理服务模型热切换与失败回滚实战:降低版本更新中断
服务器·人工智能·pytorch·python·深度学习·gpu
天远数科6 小时前
零信任架构实战:基于天远贷前风险报告构建自动化消金信贷风控与多头共债排查网关
运维·人工智能·架构·自动化