歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Unix知識 >> Unix資訊 >> Unix鏈接知識講解

Unix鏈接知識講解

日期:2017/3/6 11:38:58   编辑: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