linux关于符号链接的问题,简单!

如下:

当前工作目录为test/,其下有三个文件:

passwd与passwd-hard互为硬链接文件,passwd-soft为指向passwd的符号链接;

执行ll命令有如下结果:

[root@localhost test]# ll
总计 8
-rw-r--r-- 2 root root 1998 11-07 22:17 passwd
-rw-r--r-- 2 root root 1998 11-07 22:17 passwd-hard
lrwxrwxrwx 1 root root 6 11-07 22:31 passwd-soft -> passwd

问题是:

当我把passwd文件删掉后,为什么符号链接会失效呢?我觉得既然还有passwd的硬链接passwd-hard存在,
(在linux文件系统中,硬链接文件拥有同样的inode号,所以它们指向同一个文件)那按道理讲,符号链接passwd-soft只不过是指向passwd的inode号而已,而这个inode号是仍然存在的(passwd-hard拥有它),那么删掉passwd后passwd-soft应该也可以用才对。

请高手分析一下,为什么我想的和实际发生的情况不一样呢?

第1个回答  2012-08-02
我的分析是这样的,在你建立passwd-hard之后,只是在test目录下增加了一个文件名。如果test本身的block够的话,系统的inode和block不会变的。
然而你的软连接为什么失效呢,因为在你建立软连接之后,新增了一个文档并且占用inode与block。inode指向你文档block的内容就是/test/passwd,对!只有这个文件名。然后根据这个文件名,我们找到test目录,在test目录的inode指向的block中 找到passwd这个文件名以及对应的block。然而passwd这个文件已经被你删除了,虽然它的inode还在,但是系统并不会根据现有的passwd-hard文件名来找到对应的block块。
第2个回答  2008-11-09
我不知道是书上写错了,还是你记错了。
硬连接是不占inode的,它只是记录目标文件的关联数据;相反,符号连接是一个独立的文件,他相当于WINDOWS下的快捷方式,会占取inode和块的数量。
以下测试可以证明:
当前工作路径家目录下有一文件:passwd,后执行:
du -sb; df -i (记住块的数量和IUsed的数量) (1)
ln passwd passwd-hd
du -sb; df -i (记住块的数量和IUsed的数量) (2)
ln -s passwd passwd-so
du -sb; df -i (记住块的数量和IUsed的数量) (3)
比较(1)(2)(3),其结果不言而喻!
哦!补充一点,passwd一定是从其他目录cp的,删除当前文件,但根文件还是存在的,否则硬连接也失效了!
第3个回答  2008-11-09
首先是你观念错误。
1.Linux系统找文件的过程,
首先通过一层层的目录找到该文件相关的关联数据,
再到对应的inode获取文件属性,以及文件内容数据所在块
最后到块区域找到文件数据
2 硬链接:是在某个目录下创建一个关联数据
软链接:建立一个独立的文件,这个文件会让数据的读取只想他链接的文件内容

我前天考试的大题就是这个,哈哈,现在还记得。本回答被提问者采纳
第4个回答  2008-11-08
这也算是一次经验吧!书上说的不一定可信啊,实际跟理论不同,要么书上的错了,要么是你弄错了。
相似回答