Linux中的软链接和硬链接

Linux中的软链接和硬链接在 linux 系统中 硬链接 hardlink 和软链接 symboliclink 是两个非常重要的概念 而很多朋友在学习的时候 通常不容易区分这两个概念 所以在这里做一些记录 大家共同进步 在正式开始说明前 先讲一些不算是题外话的题外话 对于 linux 有一定了解的朋友都知道 linux 里面有一个重要的概念叫做 i 结点 即 inode 如果有人问你 一个系统里面可以存放多少文件 你会怎么回

在linux系统中,硬链接(hard link)和软链接(symbolic link)是两个非常重要的概念,而很多朋友在学习的时候,通常不容易区分这两个概念,所以在这里做一些记录,大家共同进步。

在正式开始说明前,先讲一些不算是题外话的题外话。

对于linux有一定了解的朋友都知道linux里面有一个重要的概念叫做i结点,即inode。

如果有人问你,一个系统里面可以存放多少文件?你会怎么回答?

其实,在这里,我觉得用剩余i结点的个数更准确。因为我们知道,在linux系统中,任何一个独立(注意:这里强调是独立的文件)的文件,都会为其分配一个i结点,它们是对应的,然后通过i结点再找到相应的文件的实际存储内容

接下来,我们动手实践一下,去观察观察:

首先,我们建立一个源文件block.txt,再建立两个硬链接和一个软链接文件

touch block.txt   #建立一个源文件block.txt

ln block.txt block_hd    #建立硬链接

ln block.txt block_hd2   #建立硬链接

ln -s block.txt block_soft   #建立软链接

接下来查看一下各个文件的情况: 

Linux中的软链接和硬链接

我们仔细观察一下发现,block_hd,block_hd2,block.txt拥有一样的i结点(显示结果的第一列,即),甚至于连权限属性都一模一样。而block_soft拥有另外一个独立的i结点。我们在前面曾经说过,每一个i结点对应一个实际的文件。所以,我们可以发现,建立的硬链接实际上跟我们的源文件是一样的。而软链接则是重新建立了一个独立的文件

 

事实上,硬链接的本质就是一条文件名和i结点的关联记录而已

另外,我们观察一下这几个文件的大小,由于我们的源文件是空文件,所以大小是0。那为什么两个硬链接也是0?而软链接却是9呢?

因为硬链接关联着我们的源文件,所以源文件的大小是多大,它们就是多大。至于软链接的大小为什么是9,这个就比较有趣了,大家观察一下软链接指向的源文件名(“block.txt”)的长度,是不是9?对了,我们的软链接会写上链接文件的文件名。一个字母一个字节,所以是9个字节,所以软链接的大小是9。

可能有人对于上面的说法有怀疑,别慌,我们接着测试一下。我们往空的源文件里写入一些东西。如图就是手指飞舞后的结果:

Linux中的软链接和硬链接

我们再看下几个链接文件的变化:

Linux中的软链接和硬链接

我们发现,源文件和硬链接大小都是77,而软链接依旧是9。

我们再查看下硬链接和软链接内容:

Linux中的软链接和硬链接

我们发现,我们的链接内容都是和源文件的内容一模一样,这也再次印证刚才的说法。

那么一定有人问了,如果删除了源文件会出现什么结果呢?

大家可以先猜一猜。

Linux中的软链接和硬链接

当我们删除了源文件之后,发现硬链接还能正常显示原本的内容,而软链接则提示文件不存在,这是怎么回事?

我们刚才说过,软链接是建立了另一个新的独立的文件,它指向源文件,因为源文件没了,所以它就不能正常指向了;而硬链接为什么依旧能显示原来的内容呢?回到我们一开始的解释,硬链接实际是一条文件名与i结点的记录。所以,在删除源文件的时候,系统则将链接数减1,当链接数为0的时候,inode就会被系统回收,文件的内容才会被删除。我们试一试。

Linux中的软链接和硬链接

上图中的红框就是链接数。 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/213239.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午6:16
下一篇 2026年3月18日 下午6:16


相关推荐

  • self attention(自注意力机制)

    self attention(自注意力机制)selfattentio 是注意力机制中的一种 也是 transformer 中的重要组成部分 本文先重新回归一下注意力机制 再做进一步介绍 正如之前说的 注意力机制的目的是根据我们的目标 去关注部分细节 而不是基于全局进行分析 所以核心就是如何基于目标确定我们要关注的部分 以及在找到这部分细节之后进一步进行分析 这里先以文本匹配作为例子进行介绍 假设我们要分析两个文本是不是重复的 Iama

    2026年3月20日
    2
  • 认识etcd

    认识etcd演示如何启动 etcd 写入 查看数据以及如何签发证书通过 https 方式访问 etcd

    2026年3月18日
    2
  • oracle 函数位图索引,位图索引

    oracle 函数位图索引,位图索引常规的 B 树索引对包含每行记录的 ROWID 与索引键值 位图索引不会直接存储 ROWID 每个不同的键值都有一个位图 这就是为什么创建位图索引的列要有较少的 distinct 值的原因 位图中的每一位映射到一个可能的 ROWID 位图中每一位的特定值代表是否存在有价值的记录 因此位图中存储了关于特定行和相关的 ROWID 如果 ROWID 的值与条件匹配在 rowid 的位置存储 1 不匹配存储 0 Oracle 会

    2026年3月26日
    2
  • E-R图转化为关系模型

    E-R图转化为关系模型一 实体集的转换规则一个实体集转换为关系模型中的一个关系 实体的属性就是关系的属性 实体的码就是关系的码 关系的结构是关系模式 关系 关系模式等名词的解释二 实体集间联系的转换规则 1 1 1 联系的转换方法方法一 将 1 1 联系转换为一个独立的关系 与该联系相连的各

    2026年3月26日
    3
  • OpenClaw Obsidian技能评测:设置、用例与局限性

    OpenClaw Obsidian技能评测:设置、用例与局限性

    2026年3月13日
    2
  • Raid0、Raid1、Raid5及Raid10的区别

    Raid0、Raid1、Raid5及Raid10的区别一、概况Raid(RedundantArrayofIndepentDisk独立冗余磁盘阵列)技术是加州大学伯克利分校1987年提出,最初是为了组合小的廉价磁盘来代替大的昂贵磁盘,同时希望磁盘失效时不会对数据的访问造成影响而开发的数据保护技。raid就是由多块磁盘构成的冗余阵列,在操作系统下是作为一个独立的大型存储设备出现的。它可以充分发挥出多块硬盘的优势,可以提升硬盘的读写速度,提高硬盘的利用率,日工容错功能确保数据的安全性,易于管理等优点。在任何一块硬盘出现问题的情况下都可以继续工作,不受损

    2022年7月25日
    10

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号