您的位置:首页 > 健康 > 养生 > 【Linux学习】深入理解软硬链接

【Linux学习】深入理解软硬链接

2024/10/6 5:53:00 来源:https://blog.csdn.net/2301_77509762/article/details/140881341  浏览:    关键词:【Linux学习】深入理解软硬链接
🍑个人主页:Jupiter.
🚀 所属专栏:Linux从入门到进阶
欢迎大家点赞收藏评论😊

在这里插入图片描述

目录

    • `🎈软硬链接`
      • `🐧软链接`
      • `🐬硬链接`
    • `🐸总结软硬链接的原理
    • `🐍软硬链接的应用场景`
      • `🐉软链接应用场景`
      • `🦎硬链接应用场景`


🎈软硬链接

观察软硬链接现象以及指令
命令:ln
作用:给指定文件建立软链接

🐧软链接

指令:ln -s 指定文件 软链接名称

根据下图的例子,我们可以直观上发现:

  • 软链接本质上是一个独立的文件,有独立的inode,该文件的数据区里面存储的是指定文件所在的路径

示例:
在这里插入图片描述

🐬硬链接

指令:ln 指定文件 硬链接名称

根据下面示例的的现象可以发现:

  • 硬链接本质不是一个独立的文件,因为它的inode编号与目标文件一样。本质是新的文件名,和目标文件的inode编号的映射关系!将映射关系写入到指定的目录的数据块中,并将该目录的inode属性中的引用计数++

我们在删除文件时干了两件事情:

  • 在目录中将对应的记录删除。
  • 将硬链接数-1,如果为0,则将对应的磁盘释放。

示例:

删除软硬链接文件,可以使用rm指令删除,也可以使用指令:unlink 软硬链接文件名。其中unlink也可删除普通文件。二者整体区别不大。

`🐸总结软硬链接的原理

硬链接本质:是新的文件名,和目标文件的inode编号的映射关系!将映射关系写入到指定的目录的数据块中,并将该目录的inode属性中的引用计数++。

软链接本质:上是一个独立的文件,有独立的inode,该文件的数据区里面存储的是指定文件所在的路径。 类似windows下的快捷方式。

当我们右键点击软件图标,查看属性,我们可以发现其中的目标就是软链接文件的内容(目标文件的所在路径):

🐍软硬链接的应用场景

🐉软链接应用场景

软链接的应用场景:快捷方式

  • 当我们的可执行程序的位置距离当前位置较深的时候,每次执行的时候都需要 ./路径 都需要加很长的路径,较麻烦,可以直接在当前位置给可执文件建立软链接,就可以直接在当前位置使用 ./软链接名 即可。
    示例:

🦎硬链接应用场景

当我们新建立一个文件,文件的硬链接数为1,因为当前目录的数据块中,对应文件和文件inode的映射关系只有一个,这个很好理解,但是当我们新建立一个目录时,硬链接数却为2,为什么呢?

  • 因为新建立的目录中,有两个隐藏的目录,分为别为... 如图:其中的 .目录的inode与empty目录的inode编号一样,对于一个inode编号,有两个文件名与之对应,所以硬链接数为2。
    这里就很好解释..文件的硬链接数为什么为3了,这里不赘诉。

所以这里可以得出结论一个目录下有多少个子目录,等于该目录的 硬链接数-2 得到

  • 解释:一个空目录,默认硬链接数为2,上面已经解释了,当我们在这个目录里面每新建立一个目录,新建的目录里面都会有一个隐藏的…文件,该…文件是上级目录的一个链接硬,所以硬链接数会+1,每新建立一个都会+1,所以可以得出结论。

注意:用户对一个文件可以建立软硬连接,但是目录只能建立软链接不能建立硬链接(系统可以建立,其中.与…就是例子)。

  • 解释:因为如果用户可以建立硬链接的话,当我们如果给/目录建立硬链接的话,当我们在查找文件的时候,会根据文件路径
    前缀进行路径解析,当从/目录开始向下进行查找的时候,会发生环路问题。如果是系统建立的硬链接,系统会避免环路问题。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com