前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >获奖+答案公布:Linux符号链接和硬链接的小测试

获奖+答案公布:Linux符号链接和硬链接的小测试

作者头像
Linux阅码场
发布2019-10-08 17:51:01
9780
发布2019-10-08 17:51:01
举报
文章被收录于专栏:LINUX阅码场LINUX阅码场

假设目录“~”下面不存在a, b, c这样的文件,在该目录下面执行如下命令:

题目步骤

$ echo hello > a

$ ln a b

$ ln -s a c

$ rm a

$ echo world > a

请问接下来执行“cat b”输出什么?执行"cat c”输出什么?解释为什么!详细论述其中关于inode等的变化。

虽然很多童鞋的答案都是正确的,但是获奖名单只能有三人。众多童鞋的回答参见做题免费送书:关于Linux符号链接和硬链接的小测试的留言。

我们根据答案回复的先后顺序,答案的精细度、准确度和完整度,选取了3个优胜者。获奖名单与答案如下:

wsl

“cat b” 的输出是 hello, “cat c” 是world 首先解释为什么”cat b“ 输出是hello, b 文件是a 文件的硬链接,而硬链接实际 是同一个文件,因为他们的inode number 是相同的。比如笔者的测试环境: $ ls -i a 473972 a $ln a b $ ls -i b 473972 b 既然是同一个文件,a 和b 的文件内容相同,虽然第四步删除了文件a 但是inode 引用数只是减了1, 并不为0,inode 并没有删除。 下面解释为什么 “cat c”的输出 首先创建了一个名为c 的软连接,c 本质上是一个新文件(inode number不同于a)c 的文件内容是a的路径 $ ls -i c 480580 c $cat c hello 此时cat c,默认读一个link 文件, 内核FOLLOW_LINK, 也就是会读c 指向的文件a的内容。 第四步删除了a, 此时c 文件本身不受影响,c文件内容也不受影响,但是如果此时cat c 则会输出: cat: c: No such file or directory 因为FOLLOW link目标文件,目标文件已经不存在了。最后一步重新创建了一个a 文件, cat c 会输出新创建文件的内容。本质上c 文件始终没有发生变化,他的内容是就是a 的path.

红烧的威化饼

cat b显示的是hello cat c显示的是world 原因 echo hello > a 新建a(设inode number为10),内容为hello ln a b,创建硬链接b,和a共用一个inode,不同的dentry ln -s a c 创建软连接c指向a,不与a共用inode rm a 删除a文件,由于inode10有两个reference,只把它的reference减1,不删除数据,但是由于a没了, 所以c这个软连接失效。 echo world > a 新建一个新文件,假设inode number为20,内容为world,此时a和b是两个不同的文件,c是软链接指向a

桂雄~

$ echo hello > a 这里会创建a文件,此时a文件内容是hello $ ln a b 这里创建了一个硬链接b,b与a指向同一个inode $ ln -s a c 这里创建了一个软链接c,c的文件的实际内容就是a文件的路径 $ rm a 删除a文件对b没有影响,不过这个inode的引i_nlink就会减一,但是c文件的由于保存的是a文件路径名指向,因此a文件被删了后,c文件的指向就不存在了,此时cat c会报文件不存在的错误。 $ echo world > a 此时echo world又创建一个文件,文件名是a,但是此时的inode已经是重新申请到的,a与b已经不是硬链接关系了,但是c文件的软链接文件a又存在了,因此此时c文件cat的话就不会报错了 cat b的话会输出hello 因为这是在最初a创建的时候写进去的,然后b跟他共享了inode,因此文件内容还是hello cat c的话输出world 这里c是新建的a的软链接,这个a文件已经不是原来的a文件,c文件软链接的也不是原来的a文件,而是最后输入world的时候创建的新的a文件。而c文件软链接到了a文件,因此cat到的就是新的a文件内容。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-09-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Linux阅码场 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档