歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Unix知識 >> Unix資訊

Unix鏈接知識講解

已經學習了很多Unix鏈接的知識,我們曾經在《文件系統研究之二》中提到了文件名是文件i節點的鏈接,也就是說一個i節點可以有多個Unix鏈接,即多個文件名,這種鏈接就是所謂的硬鏈接。除了硬鏈接之外,Unix下還有另一種Unix鏈接,稱之為符號鏈接。

硬鏈接用ln命令創建,符號鏈接用ln -s創建。開始之前,先實踐一把,在sco Unix試驗如下命令:
 

  1. 538# echo "test" >abc  
  2. 539# l -i abc  
  3. 65542 -rw-r--r-- 1 root sys 5 Jul 5 04:54 abc  
  4. 540# ln abc abcnew  
  5. 541# ln -s abcnew abcs  
  6. 542# l -i abc*  
  7. 65542 -rw-r--r-- 2 root sys 5 Jul 5 04:54 abc  
  8. 65542 -rw-r--r-- 2 root sys 5 Jul 5 04:54 abcnew  
  9. 65542 -rw-r--r-- 2 root sys 5 Jul 5 04:54 abcs@ 

可以看到:
1、文件abcnew跟abc的大小,i節點完全一致;
2、文件abcs跟abcnew的大小,i節點也一致(注意:abcs的真實i節點並不是65542,後面可以看到,這是l程序的原因)
3、注意第三列的數字2,代表該i節點有2個Unix鏈接,不是3個。

試驗二:
 

  1. 558# echo "test2">>abcnew  
  2. 559# cat abc  
  3. test  
  4. test2  
  5. 560# l -ia abc*  
  6. 65542 -rw-r--r-- 2 root sys 11 Jul 5 05:06 abc  
  7. 65542 -rw-r--r-- 2 root sys 11 Jul 5 05:06 abcnew  
  8. 65542 -rw-r--r-- 2 root sys 11 Jul 5 05:06 abcs@  
  9. 561# rm abc  
  10. 562# l -ia abc*  
  11. 65542 -rw-r--r-- 1 root sys 11 Jul 5 05:06 abcnew  
  12. 65542 -rw-r--r-- 1 root sys 11 Jul 5 05:06 abcs@ 

可以看到:
1、修改abcnew,abc同樣大小變化,內容也同樣變化;
2、刪除abc,不會刪除abcnew,但是Unix鏈接數變成1。

試驗三:
 

  1. 563# rm abcnew  
  2. 564# l -ia abc*  
  3. 65543 lrwxrwxrwx 1 root sys 6 Jul 5 05:06 abcs@  
  4. 565# cat abcs  
  5. cat: cannot open abcs: No such file or directory (error 2)  
  6. 567# echo "test3" >abcnew  
  7. 568# cat abcs  
  8. test3  
  9. 569# l -ia abc*  
  10. 65542 -rw-r--r-- 1 root sys 6 Jul 5 05:39 abcnew  
  11. 65542 -rw-r--r-- 1 root sys 6 Jul 5 05:39 abcs@ 

可以看到:
1、刪除abcnew,abcs還是不會被刪除;
2、這裡可以看出abcs的真實的i節點及大小。
3、重建abcnew之後,abcs指向了新的abcnew(i節點內容都變了)。

通過以上試驗看出:硬鏈接典型的特征就是,所有文件的i節點號是一樣的;硬鏈接不是文件拷貝,只是增加了一個i節點Unix鏈接(或者說增加了一個入口指針),所有的硬鏈接都是權力(權限,大小)均等的,修改任意一個,其他也被修改。

Copyright © Linux教程網 All Rights Reserved