软链接的block块存储的是源文件的什么信息?为什么不是i节点?

来源:3-5 Linux链接命令

慕粉4238150

2017-06-11 16:37

软链接的block块保持 的是源文件的什么信息?为什么不是i节点?我的想法来自于删除了源文件硬链接还能访问,那说明i节点的信息还在。可是为什么软链接不能访问呢?软链接的block块存储的是什么?要识别到源文件,存储的不应该是源文件的i节点吗!

写回答 关注

3回答

  • Sunglasses_cat
    2017-09-21 21:39:37

    http://img4.mukewang.com/59c3c0c40001763807950241.jpg补充图

  • 老_喵
    2017-06-11 17:42:52

    我的理解是这样的,软链接有自己的inode,指明了自己所在的block,block中存放的是源文件的文件名和inode。源文件删除导致软链接不能使用的原因是,源文件删除后,该inode 结点的引用次数会变为0(软链接的inode与源文件的inode是不同的),文件对应的block会从文件管理表中删除,也就是说该inode 失效,因此会导致软链接也不能使用。

    Sungla... 回复老_喵

    我觉得你的理解跟他们又不一样了,倘若你这么理解那么老师就没有说错。 我也做了尝试,我发现一件奇葩的事,/root/下的anaconda-ks.cfg文件创建的软连接是无效的。。。(有图为证) 而我先在/tmp/创建了一个anaconda-ks.cfg的硬链接,再创建/root/下的anaconda-ks.cfg的软连接就有效了(此时/tmp/下分别有anaconda-ks.cfg的软硬链接各一个) 然后我把/tmp/中的硬链接删除,/tmp/中的软连接就又失效了,,,这是不是证明了软连接链接的是硬链接而不是原文件,那这么说每建立一个软连接还得先建立一个硬链接喽??

    2017-09-21 21:39:12

    共 3 条回复 >

  • 吴一志
    2017-06-11 17:06:29

    软连接的block块存储的应该是源文件的路径信息。软链接可以类比windows的快捷方式,存放真实文件的路径,访问软链接时,取到的是真实路径信息,然后系统根据真实路径信息继续查找到源文件的位置。所以,当删除了源文件,继续访问软链接时,同样能拿到一个原先的真实路径信息,但根据真实路径信息查找时,已经找不到源文件了。

    慕粉1720...

    正解。软链接的数据块中存放的就是原文件的路径,而不是inode号,从创建软链接时要使用绝对路径就能看出来。如果存放的是inode号,那么就不会出现~~不使用绝对路径时软链接会自动链接到同级目录下的同名文件的错误了。而且如果存放的是inode号,我感觉会比较浪费系统资源,毕竟文件很多。

    2017-06-15 01:30:10

    共 1 条回复 >

Linux达人养成计划 I

Linux入门视频教程,以通俗易懂的语言带你感受linux之美

398689 学习 · 3791 问题

查看课程

相似问题