Unix鏈接知識(shí)講解
已經(jīng)學(xué)習(xí)了很多Unix鏈接的知識(shí),我們?cè)?jīng)在《文件系統(tǒng)研究之二》中提到了文件名是文件i節(jié)點(diǎn)的鏈接,也就是說一個(gè)i節(jié)點(diǎn)可以有多個(gè)Unix鏈接,即多個(gè)文件名,這種鏈接就是所謂的硬鏈接。除了硬鏈接之外,Unix下還有另一種Unix鏈接,稱之為符號(hào)鏈接。
硬鏈接用ln命令創(chuàng)建,符號(hào)鏈接用ln -s創(chuàng)建。開始之前,先實(shí)踐一把,在sco Unix試驗(yàn)如下命令:
- 538# echo "test" >abc
- 539# l -i abc
- 65542 -rw-r--r-- 1 root sys 5 Jul 5 04:54 abc
- 540# ln abc abcnew
- 541# ln -s abcnew abcs
- 542# l -i abc*
- 65542 -rw-r--r-- 2 root sys 5 Jul 5 04:54 abc
- 65542 -rw-r--r-- 2 root sys 5 Jul 5 04:54 abcnew
- 65542 -rw-r--r-- 2 root sys 5 Jul 5 04:54 abcs@
可以看到:
1、文件abcnew跟abc的大小,i節(jié)點(diǎn)完全一致;
2、文件abcs跟abcnew的大小,i節(jié)點(diǎn)也一致(注意:abcs的真實(shí)i節(jié)點(diǎn)并不是65542,后面可以看到,這是l程序的原因)
3、注意第三列的數(shù)字2,代表該i節(jié)點(diǎn)有2個(gè)Unix鏈接,不是3個(gè)。
試驗(yàn)二:
- 558# echo "test2">>abcnew
- 559# cat abc
- test
- test2
- 560# l -ia abc*
- 65542 -rw-r--r-- 2 root sys 11 Jul 5 05:06 abc
- 65542 -rw-r--r-- 2 root sys 11 Jul 5 05:06 abcnew
- 65542 -rw-r--r-- 2 root sys 11 Jul 5 05:06 abcs@
- 561# rm abc
- 562# l -ia abc*
- 65542 -rw-r--r-- 1 root sys 11 Jul 5 05:06 abcnew
- 65542 -rw-r--r-- 1 root sys 11 Jul 5 05:06 abcs@
可以看到:
1、修改abcnew,abc同樣大小變化,內(nèi)容也同樣變化;
2、刪除abc,不會(huì)刪除abcnew,但是Unix鏈接數(shù)變成1。
試驗(yàn)三:
- 563# rm abcnew
- 564# l -ia abc*
- 65543 lrwxrwxrwx 1 root sys 6 Jul 5 05:06 abcs@
- 565# cat abcs
- cat: cannot open abcs: No such file or directory (error 2)
- 567# echo "test3" >abcnew
- 568# cat abcs
- test3
- 569# l -ia abc*
- 65542 -rw-r--r-- 1 root sys 6 Jul 5 05:39 abcnew
- 65542 -rw-r--r-- 1 root sys 6 Jul 5 05:39 abcs@
可以看到:
1、刪除abcnew,abcs還是不會(huì)被刪除;
2、這里可以看出abcs的真實(shí)的i節(jié)點(diǎn)及大小。
3、重建abcnew之后,abcs指向了新的abcnew(i節(jié)點(diǎn)內(nèi)容都變了)。
通過以上試驗(yàn)看出:硬鏈接典型的特征就是,所有文件的i節(jié)點(diǎn)號(hào)是一樣的;硬鏈接不是文件拷貝,只是增加了一個(gè)i節(jié)點(diǎn)Unix鏈接(或者說增加了一個(gè)入口指針),所有的硬鏈接都是權(quán)力(權(quán)限,大小)均等的,修改任意一個(gè),其他也被修改。
【編輯推薦】