歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux技術 >> Linux學習筆記(4

Linux學習筆記(4

日期:2017/3/3 12:22:48   编辑:Linux技術

昨天老師提到一到考研題:

有點疑惑,就自己試了一下.

先復習一下軟連接和硬連接的概念:

Linux中每個文件都會有inodeinode所指向的(datablock)數據塊.

圖片出處(北理珠本末終始)

Linux下面軟連接和硬連接都類似於快捷方式,主要區別在於軟連接會新建立一個新的inode,這個inode所指的數據塊指向原來的inode,如圖:

圖片出處(北理珠本末終始)

而硬連接直接指向原來的inode.

根據上面的題,新建一個源文件文件F1.txt,再建立一個軟連接F2連接到F1 ln -s F1.txt F2.txt 硬連接F3連接到F1 link F1.txt F3.txt

stat 可幫助我們區分軟鏈接與其他文件並查看文件 inode 號

因此,分別查看F1,F3的文件屬性

可以看到,這裡F1,F3指向的inode(15719)是同一個,需要注意的是,F1和F3,inode上面的links都是2,因為有兩個連接指向次inode,分別是F1和硬連接F3.符合上圖的概念.其次,按照上圖的概念,此時軟連接F2應該指向一個編號不一樣的inode(15716),連接數為1,而這個inode(15716)指向的數據塊才是F1文件名(15719).

果然,F2指向的inode區別於硬連接.

為了體現軟硬連接的差別,向F1.txt寫入helloworld!

刪除F1之前: 此時F1,F2與F3最終指向同一個數據塊,所以無論打開F1,F2還是F3都能同步讀取數據helloworld!

刪除源文件F1之後,根據上圖硬連接的概念,盡管F1已經delete,但是由於硬連接F3有自己指向原來的inode,所以依舊可以打開那個數據塊.此時打開F3依舊是helloworld! 查看F2和F3的連接.此時F3指向inode的links已經減少為1,因為源文件F1不再存在.

然而F2是一個軟連接,它只是間接指向了F1,由於F1已經刪除所以此時無法打開F2.

到這裡可以知道,那道題答案是1,1.

另外還有一點,老師提及到

刪除軟鏈接並不影響被指向的文件,但若被指向的原文件被刪除,則相關軟連接被稱為死鏈接(即 dangling link,若被指向路徑文件被重新創建,死鏈接可恢復為正常的軟鏈接)。

所以我再次重建一個文件,名F1.txt,不過內容改為 “comeback?”此時新建立的inode不會和第一次inode相同.

打開F2,果然可以成功打開,文件內容變成和F1內容一樣,”comeback?”

在此證實軟連接是指向文件名的數據塊因此重建一個文件名相同的文件可以讓軟連接解除死連接的狀態.

而打開F3,內容依舊是helloworld!

因為F3依舊指向最原始那個inode(15719),所以數據不會改變.F1已經是新的inode(15715),因此F3不會同步數據

Copyright © Linux教程網 All Rights Reserved