Linux 03 鏈結概念

2021-10-06 10:19:56 字數 2017 閱讀 8544

linux 鏈結分兩種,一種被稱為硬鏈結(hard link),另一種被稱為符號鏈結(symbolic link)。

情況下,ln命令產生硬鏈結。

硬連線指通過索引節點來進行連線。在 linux 的檔案系統中,儲存在磁碟分割槽中的檔案不管是什麼型別都給它分配乙個編號,稱為索引節點號(inode index)。在 linux 中,多個檔名指向同一索引節點是存在的。比如:a 是 b 的硬鏈結(a 和 b 都是檔名),則 a 的目錄項中的 inode 節點號與 b 的目錄項中的 inode 節點號相同,即乙個 inode 節點對應兩個不同的檔名,兩個檔名指向同乙個檔案,a 和 b 對檔案系統來說是完全平等的。刪除其中任何乙個都不會影響另外乙個的訪問。

硬連線的作用是允許乙個檔案擁有多個有效路徑名,這樣使用者就可以建立硬連線到重要檔案,以防止「誤刪」的功能。其原因如上所述,因為對應該目錄的索引節點有乙個以上的連線。只刪除乙個連線並不影響索引節點本身和其它的連線,只有當最後乙個連線被刪除後,檔案的資料塊及目錄的連線才會被釋放。也就是說,檔案真正刪除的條件是與之相關的所有硬連線檔案均被刪除。

另外一種連線稱之為符號連線(symbolic link),也叫軟連線。軟鏈結檔案有類似於 windows 的快捷方式。它實際上是乙個特殊的檔案。在符號連線中,檔案實際上是乙個文字檔案,其中包含的有另一檔案的位置資訊。比如:a 是 b 的軟鏈結(a 和 b 都是檔名),a 的目錄項中的 inode 節點號與 b 的目錄項中的 inode 節點號不相同,a 和 b 指向的是兩個不同的 inode,繼而指向兩塊不同的資料塊。但是 a 的資料塊中存放的只是 b 的路徑名(可以根據這個找到 b 的目錄項)。a 和 b 之間是「主從」關係,如果 b 被刪除了,a 仍然存在(因為兩個是不同的檔案),但指向的是乙個無效的鏈結。

測試:

[root@*** /]

# cd /home

[root@*** home]

# touch f1 # 建立乙個測試檔案f1

[root@*** home]

# ls

f1[root@*** home]

# ln f1 f2 # 建立f1的乙個硬連線檔案f2

[root@*** home]

# ln -s f1 f3 # 建立f1的乙個符號連線檔案f3

[root@*** home]

# ls -li # -i引數顯示檔案的inode節點資訊

397247 -rw-r--r-- 2 root root 0 mar 13 00:50 f1

397247 -rw-r--r-- 2 root root 0 mar 13 00:50 f2

397248 lrwxrwxrwx 1 root root 2 mar 13 00:50 f3 -> f1

從上面的結果中可以看出,硬連線檔案 f2 與原檔案 f1 的 inode 節點相同,均為 397247,然而符號連線檔案的 inode 節點不同。

# echo 字串輸出 >> f1 輸出到 f1檔案

[root@*** home]

# echo "i am f1 file" >>f1

[root@*** home]

# cat f1

i am f1 file

[root@*** home]

# cat f2

i am f1 file

[root@*** home]

# cat f3

i am f1 file

[root@*** home]

# rm -f f1

[root@*** home]

# cat f2

i am f1 file

[root@*** home]

# cat f3

cat: f3: no such file or directory

通過上面的測試可以看出:當刪除原始檔案 f1 後,硬連線 f2 不受影響,但是符號連線 f1 檔案無效;

Linux03高階命令

1 df命令 作用 檢視磁碟空間 語法 df h h作用為表示可讀性較高的形式展示大小 2 free指令 作用 檢視記憶體使用情況 語法 free m m的意思是以m為單位顯示,類似的還有 b k g 3 head指令 作用 檢視檔案前部分內容 用法 head n 路徑 n代表行數,檢視檔案的前幾行...

Linux 03 目錄解析

1 解除安裝掛載分割槽 df h 檢視硬碟分割槽 umount boot 解除安裝分割槽 mount dev sda1 boot 掛載分割槽 du s 檢視各個檔案目錄的大小 var 包含系統一般執行時要改變的資料。通常這些資料所在的目錄的大小是要經常變化或擴充的。原來 v a r目錄中有些內容是在...

Linux 03 使用者管理

linux系統是乙個多使用者多工的作業系統,任何乙個要使用系統資源的使用者,都必須首先向系統管理員申請乙個賬號,然後以這個賬號的身份進入系統。linux的使用者需要至少要屬於乙個組。基本語法 useradd 選項 使用者名稱 當建立使用者成功後,會自動的建立和使用者同名的家目錄。也可以通過usera...