【Linux初阶】基础IO - 软硬链接 | 初识、理解、应用 & 文件acm时间

本文介绍了Linux中的软硬链接概念,包括它们的创建、区别和应用场景。软链接具有独立inode,类似快捷方式,删除源文件会失效;硬链接共享inode,删除文件时只有当count为0才会真正删除。此外,文章还讨论了文件的Access、Modify和Change时间戳的含义。
摘要由CSDN通过智能技术生成

🌟hello,各位读者大大们你们好呀🌟
🍭🍭系列专栏:【Linux初阶】
✒️✒️本篇内容:初识软硬链接,软硬链接的区别,理解软硬链接,软硬链接的应用,文件acm时间
🚢🚢作者简介:计算机海洋的新进船长一枚,请多多指教( •̀֊•́ ) ̖́-



一、软硬链接初识

1.软连接初识

建立一个软连接文件 soft_file.link:假设我们有一个 makefile.txt文件,可以使用ln -s命令,将我们的soft_file.link 对 makefile.txt进行软连接。

ln -s myfile.txt soft_file.link

在这里插入图片描述

通过观察,我们可以发现这是一个l开头的文件,这种文件我们称之为 链接文件。同时,通过观察链接文件与被链接文件的 inode,它们具有相互独立的 inode,我们可以知道这是两个独立的文件。

总结,软连接文件权限以 l 开头,具有独立的 inode

———— 我是一条知识分割线 ————

2.硬链接初识

建立一个硬连接文件 hard_file.link:假设我们有一个 makefile.txt文件,可以使用ln命令,将我们的hard_file.link 对 makefile.txt进行硬连接。

ln myfile.txt hard_file.link

在这里插入图片描述

———— 我是一条知识分割线 ————

3.软硬链接的区别

软硬链接的区别:是否具有独立的 inode

  • 软连接具有独立的 inode – 可以被当作独立文件看待
  • 硬链接不具有独立的 inode – 那硬链接我们应该如何理解呢?让我们继续向下研究。

总结:我们以 是否有独立的 inode判断软硬链接

———— 我是一条知识分割线 ————

二、理解 硬链接 和 软连接

1.理解硬链接

(1)硬链接原理

通过观察,我们不难发现,硬链接的 inode和被链接文件的 inode是同一个!假如我们在 makefile.txt中写入内容,没有在 hard_file.link中写入内容,分别输出 makefile.txt 和 hard_file.link的内容,我们可以发现它们的输出内容也一样。

也就是说:建立硬链接,根本没有建立新文件。因为系统没有给硬链接分配 独立的 inode。既然没有建立文件,也就没有自己的属性集合和内容集合,因此我们不难推断出,它使用的是被链接文件的属性集合和内容集合。

在这里插入图片描述

总结:硬链接共享被链接文件的 inode

———— 我是一条知识分割线 ————

(2)count记录硬连接数

其中 inode里面包括一个引用记数 count:它记录的是有硬连接数。当有多一个文件名链接 inode时,count++,count初识数为1。我们可以通过 ll -li指令查看文件的 count,观察下图,创建硬链接后,makefile.txt 和 hard_file.link 的 count 由1变为了2.

在这里插入图片描述

总结:inode中由count引用记数,用于记录本 inode硬链接数

———— 我是一条知识分割线 ————

(3)文件真正删除(count=0)

什么时候一个文件被真正删除呢?答案是,当一个文件 inode的硬链接数变为 0,也就是 count变为 0的时候一个文件才被真正删除。下图示例中将硬链接被链接文件删除,本质上只改变了 count,没有删除文件。
加粗样式

总结:硬连接数(count)变为 0,一个文件才被真正删除。

———— 我是一条知识分割线 ————

2.理解软连接

(1)删除目标文件,软连接会失效

我们删除源文件后发现,软连接文件进行了报错,因为还有硬链接文件(count=1),源文件的 inode依旧存在,说明软连接并不是用 inode进行标记的。

我们可以思考一下,我们在计算机使用过程中,是使用什么方法查找文件的,不就是通过文件的路径和文件名进行查找的吗?实际上,软连接通过 目标文件的路径(具体路径 - 其中包括目标文件的文件名),对目标文件进行标定

我们进一步做推断,这个路径只能放在这个软链接文件的数据块中。因此,将目标文件(源文件)删除,这个路径就失效了(不完整了),软连接也就失效了。

加粗样式

总结:软连接文件是独立文件,拥有自己的数据块,数据块中存储的是目标文件的路径(包括目标文件名、很具体的那种),它可以通过目标文件的路径,找到目标文件
补充:删除目标文件,软连接失效,新建同名目标文件,软连接恢复。 删除软连接,对目标文件无影响

(2)软连接 = 快捷方式

为什么我们双击电脑的快捷键图标,能运行我们的程序呢?答案就是,快捷键属性中保存有我们目标可运行程序的路径,双击操作之后通过软连接的方式完成了跳转。

在这里插入图片描述

快捷方式的意义:方便快捷的获得服务。

总结:软连接 = 快捷方式


三、软硬链接的应用

(1)软连接的应用 - 快捷方式

Linux下,会有不同深度的目录,我们可以通过软连接的方式,将软连接文件放在不同于目标文件的目录下,使用户在不同的目录下,也可以快捷简便的运行或打开该文件。

软连接的存在,让文件在非存在目录下也可以被访问

(2)硬链接的应用 - 目录

创建一个空目录,通过指令我们可以发现,目录的默认 count为2,这是为什么呢?下面我们做一个实验:创建一个名为 empty的空目录,进入目录并通过 ls -lina查看所有文件(包括隐藏文件)

在这里插入图片描述

最终我们可以发现,其中还有两个文件,一个是 .,另一个是 ..;注意,点也是一个文件。根据我们之前所学知识,我们知道, .代表的含义就是当前目录, ..代表的含义为上一级目录。

普通文件 count默认为 1,这是因为目录本身的文件名与对应的 inode有映射关系。而目录文件 conut默认为 2,这是因为目录中还有一个隐藏文件 .,它与目录的 inode也具有映射关系。

当我们在 empty的空目录下再创建一个空目录,empty的 count会变成 3,这是因为它的下级目录中会有一个隐藏文件 ..(代表上级目录)与 empty的 inode形成映射关系。

我们可以通过观察 inode进行验证:这是硬链接应用的一种体现。

在这里插入图片描述

至此,我们就明白了指令 cd ..的原理是什么了。 实际上就是因为 ..作为上级目录的硬链接文件,指向的是上级目录的路径。

总结:硬链接帮助树状结构的目录实现了,向下查找和向上回退

操作系统为了保证文件查找流程稳定,防止出现目录与目录之间形成闭环,导致无法顺利按树状结构进行向下查找和向上回退的情况出现,它:不允许用户给目录建立硬链接。

注意:操作系统不允许用户给目录建立硬链接


四、文件 acm时间

对于我们任何一个文件来说都有三类时间:

  • Access 最后访问时间
  • Modify 文件内容最后修改时间
  • Change 属性最后修改时间

我们可以通过 stat指令进行查阅,下面举一个简单的例子:

stat test.c

在这里插入图片描述

总结:

  1. 当我们对文件属性进行修改,文件对应的 Change(属性最后修改时间)也会被修改。
  2. 当我们对文件内容进行修改,文件对应的 Modify 和 Change 都会被修改;这是因为,文件内容被改时,文件的属性很大概率也会被改变,因此这两个时间都变了。
  3. 当文件被访问时,操作系统会根据策略(访问一定时间或次数)对 Access修改。

结语

🌹🌹 软硬链接 和 文件acm时间 的知识大概就讲到这里啦,博主后续会继续更新更多Linux的相关知识,干货满满,如果觉得博主写的还不错的话,希望各位小伙伴不要吝啬手中的三连哦!你们的支持是博主坚持创作的动力!💪💪

  • 15
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值