当前位置:  技术问答>linux和unix

关于hard link----------------------求高手

    来源: 互联网  发布时间:2017-01-15

    本文导语:  前几天看鸟哥的私房菜,在关于文件系统的章节中,有这样一段文字: 事实上 hard link 应该仅能在单一文件系统中迚行癿,应该是丌能够跨文件系统扄对! 因为图 2.2.1 就是在同一个 filesystem 上嘛!所以 hard lin...

前几天看鸟哥的私房菜,在关于文件系统的章节中,有这样一段文字:
事实上 hard link 应该仅能在单一文件系统中迚行癿,应该是丌能够跨文件系统扄对! 因为图 2.2.1 就是在同一个 filesystem 上嘛!所以 hard link 是有限制癿:
1.不能跨 Filesystem;
2.不能 link 目彔。
不能跨 Filesystem 还好理解,那不能 hard link 到目录又是怎么回事呢?这是因为如果使用 hard link 链接到目路时, 链接的数据需要连同被链接目录底下的所有数据都建立链接,举例来说,如果你要将 /etc 使用实体链接建立一个 /etc_hd 的目录时,那么在 /etc_hd 底下的所有档名同时都与 /etc 底下的檔名要建立 hard link 的,而不是仅连结到 /etc_hd 与 /etc 而已。 并且,未来如果需要在 /etc_hd 底下建立新档案时,连带的, /etc 底下的数据又得要建立一次 hard link ,因此造成环境相当大癿复杂度。 所以啰,目前 hard link 对于目彔暂时还是不支持的啊!

我自己也尝试了一下,确实是这样(我的文件系统是ext3):
[root@localhost ~]# mkdir alex
[root@localhost ~]# ln /home/alex/ /root/alex/
ln: `/home/alex/': hard link not allowed for directory

但是我发现我的系统中又确实有目录的硬链接存在:
[root@localhost ~]# ls -lid /etc/rc.d/init.d/ /etc/init.d/
360161 drwxr-xr-x 2 root root 4096 Nov  8 16:46 /etc/init.d/
360161 drwxr-xr-x 2 root root 4096 Nov  8 16:46 /etc/rc.d/init.d/
而且这两个目录下的文件好像也都是硬链接
[root@localhost ~]# ls -lid /etc/rc.d/init.d/acpid /etc/init.d/acpid
361438 -rwxr-xr-x 1 root root 1566 Jan  8  2010 /etc/init.d/acpid
361438 -rwxr-xr-x 1 root root 1566 Jan  8  2010 /etc/rc.d/init.d/acpid

是鸟哥的书错了吗?求达人解惑。

|
我实验了一下,我的fedora(除了inode号不一样)和LZ的情况完全一样……
我的理解是这样的,linux不允许对目录进行hlink只是针对用户的(即使是root),但是内核是可以这么做的,也就是说可以编程实现(程序员总是比普通用户拥有更多的特权,API总比命令底层的多)……
回想一下每次创建目录的时候,目录的hlink数量都是2,这就说明在你执行mkdir这个命令的时候,mkdir命令本身可以进行目录的hlink……
但是如果按照这个道理,acpid和init.d/的hlink数就应该是2和3,而不应该是1和2……
我想,可能是系统要保证对于用户来说目录不可hlink的要求,所以将hlink数改掉的,但是inode关系到整个系统的正常运转,所以没法改。这一切都是在系统安装的时候进行的,也就是程序决定的……(这个只是猜测)

|
不是你的系统有什么问题吧..

361438 -rwxr-xr-x 1 root root 1566 Jan 8 2010 /etc/init.d/acpid
361438 -rwxr-xr-x 1 root root 1566 Jan 8 2010 /etc/rc.d/init.d/acpid

如果这两个是链接文件的话,第3列的数字不应该是1

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 请问hard_start_xmit()何时被调用的问题
  • DM9008的hard_start_xmit()怎么写?
  • linux no hard drives have been found问题
  • linux网卡驱动层,如何直接调用hard_start_xmit发二层包
  • rhel4无法识别新计算机SATA硬盘No hard drives have been found!
  • pip 错误unused-command-line-argument-hard-error-in-future解决办法
  • How to copy files from CD-ROM to hard disk?
  • 写一个以太网驱动,在hard_start_xmit中访问dev->priv中的成员,出现崩溃


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3