linux鏈結分兩種,一種被稱為硬鏈結(hard link),另一種被稱為符號鏈結(symbolic link)。預設情況下,ln命令產生硬鏈結。
【軟連線】
另外一種連線稱之為符號連線(symbolic link),也叫軟連線。軟鏈結檔案有類似於windows的快捷方式。它實際上是乙個特殊的檔案。在符號連線中,檔案實際上是乙個文字檔案,其中包含的有另一檔案的位置資訊。
鏈結檔案甚至可以鏈結不存在的檔案,這就產生一般稱之為"斷鏈"的問題(或曰「現象"),鏈結檔案甚至可以迴圈鏈結自己。類似於程式語言中的遞迴。
用ln -s 命令可以生成乙個軟連線,如下:
[root@linux236 test]#ln -s source_file softlink_file
在對符號檔案進行讀或寫操作的時候,系統會自動把該操作轉換為對原始檔的操作,但刪除鏈結檔案時,系統僅僅刪除鏈結檔案,而不刪除原始檔本身。
ps:給目錄加軟連線
1、無論是原始檔位址還是目標檔案位址必須使用絕對路徑,否則會出現「符號連線的層數過多」 這樣的錯誤
【硬連線】
硬連線指通過索引節點來進行連線。在linux的檔案系統中,儲存在磁碟分割槽中的檔案不管是什麼型別都給它分配乙個編號,稱為索引節點號(inode index)。在linux中,多個檔名指向同一索引節點是存在的。一般這種連線就是硬連線。硬連線的作用是允許乙個檔案擁有多個有效路徑名,這樣使用者就可以建立硬連線到重要檔案,以防止「誤刪」的功能。其原因如上所述,因為對應該目錄的索引節點有乙個以上的連線。只刪除乙個連線並不影響索引節點本身和其它的連線,只有當最後乙個連線被刪除後,檔案的資料塊及目錄的連線才會被釋放。也就是說,檔案真正刪除的條件是與之相關的所有硬連線檔案均被刪除。
info ln 命令告訴您,硬鏈結是已存在檔案的另乙個名字(a "hard link" is another name for an existing file),這多少有些令人困惑。硬連線的命令是
ln -d existfile newfile
硬鏈結檔案有兩個限制
1)、不允許給目錄建立硬鏈結;
2)、只有在同一檔案系統中的檔案之間才能建立鏈結。
對硬鏈結檔案進行讀寫和刪除操作時候,結果和軟鏈結相同。但如果我們刪除硬鏈結檔案的原始檔,硬鏈結檔案仍然存在,而且保留了願有的內容。
這時,系統就「忘記」了它曾經是硬鏈結檔案。而把他當成乙個普通檔案。
硬連線指通過索引節點來進行的連線。在linux的檔案系統中,儲存在磁碟分割槽中的檔案不管是什麼型別都給它分配乙個編號,稱為索引節點號(inode index)。
在linux中,多個檔名指向同一索引節點是存在的。一般這種連線就是硬連線。硬連線的作用是允許乙個檔案擁有多個有效路徑名,這樣使用者就可以建立硬連線到重要
檔案,以防止「誤刪」的功能。其原因如上所述,因為對應該目錄的索引節點有乙個以上的連線。只刪除乙個連線並不影響索引節點本身和其它的連線,只有當最後乙個
連線被刪除後,檔案的資料塊及目錄的連線才會被釋放。也就是說,檔案才會被真正刪除。
[oracle@linux]$ touch f1 #建立乙個測試檔案f1
[oracle@linux]$ ln f1 f2 #
建立f1的乙個硬連線檔案f2
[oracle@linux]$ ln -s f1 f3 #
建立f1的乙個符號連線檔案f3
[oracle@linux]$ ls -li #
-i引數顯示檔案的inode節點資訊
total 0
9797648 -rw-r--r-- 2 oracle oinstall 0 apr 21 08:11f1
9797648 -rw-r--r-- 2 oracle oinstall 0 apr 21 08:11f2
9797649 lrwxrwxrwx 1 oracle oinstall 2 apr 21 08:11 f3 -> f1
從上面的結果中可以看出,硬連線檔案f2與原檔案f1的inode節點相同,均為9797648,然而符號連線檔案的inode節點不同。
[oracle@linux]$ echo "i am f1 file
" >>f1
[oracle@linux]$ cat f1
i am f1 file
[oracle@linux]$ cat f2
i am f1 file
[oracle@linux]$ cat f3
i am f1 file
[oracle@linux]$ rm -f f1
[oracle@linux]$ cat f2
i am f1 file
[oracle@linux]$ cat f3
cat: f3: no such file
or directory
通過上面的測試可以看出:當刪除原始檔案f1後,硬連線f2不受影響,但是符號連線f1檔案無效
依此您可以做一些相關的測試,可以得到以下全部結論:
1).刪除符號連線f3,對f1,f2無影響;
2).刪除硬連線f2,對f1,f3也無影響;
3).刪除原檔案f1,對硬連線f2沒有影響,導致符號連線f3失效;
4).同時刪除原檔案f1,硬連線f2,整個檔案會真正的被刪除。
前端學習筆記之Z index詳解
css為盒模型的布局提供了三種不同的定位方案 其中最後一種定位方案將乙個元素從常規流中移除,完全依賴開發者來確定元素顯示的位置。通過賦予top,left,bottom 和 right 屬性值,可以在二維平面上放置元素,此外css也允許使用z index屬性以在第三維上放置元素。表面上,z index...
Linux學習之nohup命令詳解
在實際生產環境中,平時常常因為實際需求,要在後台掛起乙個指令碼或者是程序,如果是掛起程序還可以使用 xinetd 服務來進行守護程序,但是如果只是需要在後台掛起乙個指令碼的話,使用 xinetd 服務就有點不太合適了,還好 linux系統 中有提供乙個很好的不結束通話地執行命令 nohup 我們使用...
Linux學習之sed命令詳解
sed是stream editor的簡稱,也就是流編輯器。它一次處理一行內容,處理時,把當前處理的行儲存在臨時緩衝區中,稱為 模式空間 pattern space 接著用sed命令處理緩衝區中的內容,處理完成後,把緩衝區的內容送往螢幕。接著處理下一行,這樣不斷重複,直到檔案末尾。檔案內容並沒有 改變...