Linux学习笔记(4-2)----关于软连接和硬连接的补充

来源:互联网 发布:淘宝网限制发布的 编辑:程序博客网 时间:2024/05/29 08:42

昨天老师提到一到考研题:
这里写图片描述
有点疑惑,就自己试了一下.


  • 先复习一下软连接和硬连接的概念:

    1. Linux中每个文件都会有inodeinode所指向的(datablock)数据块.
      这里写图片描述
      图片出处(北理珠本末终始)
    2. Linux下面软连接和硬连接都类似于快捷方式,主要区别在于软连接会新建立一个新的inode,这个inode所指的数据块指向原来的inode,如图:
      这里写图片描述
      图片出处(北理珠本末终始)

硬连接直接指向原来的inode.

根据上面的题,新建一个源文件文件F1.txt,再建立一个软连接F2连接到F1 ln -s F1.txt F2.txt
硬连接F3连接到F1 link F1.txt F3.txt

stat 可帮助我们区分软链接与其他文件并查看文件 inode 号

因此,分别查看F1,F3的文件属性
这里写图片描述
可以看到,这里F1,F3指向的inode(15719)是同一个,需要注意的是,F1和F3,inode上面的links都是2,因为有两个连接指向次inode,分别是F1和硬连接F3.符合上图的概念.

其次,按照上图的概念,此时软连接F2应该指向一个编号不一样的inode(15716),连接数为1,而这个inode(15716)指向的数据块才是F1文件名(15719).
这里写图片描述

  • 果然,F2指向的inode区别于硬连接.

为了体现软硬连接的差别,向F1.txt写入helloworld!

  • 删除F1之前:
    此时F1,F2与F3最终指向同一个数据块,所以无论打开F1,F2还是F3都能同步读取数据helloworld!
  • 删除源文件F1之后,根据上图硬连接的概念,尽管F1已经delete,但是由于硬连接F3有自己指向原来的inode,所以依旧可以打开那个数据块.此时打开F3依旧是helloworld!
    查看F2和F3的连接.此时F3指向inode的links已经减少为1,因为源文件F1不再存在.
    这里写图片描述
  • 然而F2是一个软连接,它只是间接指向了F1,由于F1已经删除所以此时无法打开F2.
    这里写图片描述

到这里可以知道,那道题答案是1,1.


另外还有一点,老师提及到

删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软连接被称为死链接(即 dangling link,若被指向路径文件被重新创建,死链接可恢复为正常的软链接)。

所以我再次重建一个文件,名F1.txt,不过内容改为 “comeback?”此时新建立的inode不会和第一次inode相同.
打开F2,果然可以成功打开,文件内容变成和F1内容一样,”comeback?”
这里写图片描述
在此证实软连接是指向文件名的数据块因此重建一个文件名相同的文件可以让软连接解除死连接的状态.

而打开F3,内容依旧是helloworld!
因为F3依旧指向最原始那个inode(15719),所以数据不会改变.F1已经是新的inode(15715),因此F3不会同步数据
这里写图片描述

0 0
原创粉丝点击