為什么系統可執行文件多用相對路徑創建鏈接
使用鏈接有什么好處
作為一個linux初學者,我們首先要知道,在linux中使用鏈接的好處是什么??偨Y下來一共有幾個:
- 使用鏈接可以使我們在訪問文件時省去一大筆敲文件路徑的時間。對于我們運維工程師來說,我們經常要查看某個文件或者訪問某個目錄,再進行該項工作時,往往需要敲很多路徑才能找到我們想訪問的文件,創建鏈接可以讓我們不需要知道某個文件的具體路徑時什么,便可以直接通過鏈接去訪問該文件,這樣便會大大提升我們的工作效率。畢竟誰不愿意早點做完自己的工作,去享受自己愜意悠閑的時光呢。
- 使用鏈接可以幫我們節省硬盤空間。在工作中我們往往需要對一個文件在不同的路徑讓我們使用,可是每次復制一次文件都會占用一些硬盤空間,可不要小看這些文件,可能剛開始空間的占用并不會太多,隨著我們工作的深入,以及服務器的長時間運行,多余的文件會越來越多,說不定某天就會因為存儲空間被爆滿而宕機,那時候后果就很嚴重了。而使用鏈接,就可以幫我們大大減少文件的重復存儲,為我們的硬盤瘦身,從而增加我們解決危機的機會。
- 使用連接可以幫我們減少效率低下的重復工作。在工作中,如果我們有一個相同的文件,在不同的目錄下存儲,而有一天需要對文件進行修改,我們需要花費多次找到這些文件進行一一修改,這回大大增加我們的工作繁瑣度,降低我們的工作效率,而且多次修改也潛在的增加了文件修改的錯誤率。而使用鏈接則會大大提升我們的效率,例如我們給一個文件設了100個硬鏈接,在需要修改的的時候,只需要修改源文件就好了,而這些鏈接的和原文件其實時一個東西,這樣的話是不是就會大大節省我們的時間呢?
鏈接的分類以及不同之處
在Linux中鏈接分為兩類一個是硬鏈接一個就是符號鏈接(軟連接),它們是兩類特殊的文件。軟鏈接可以看作是Windows中的快捷方式,可以讓你快速鏈接到目標檔案或目錄。硬鏈接則透過文件系統的inode來產生新檔名,而不是產生新檔案。
對于Linux來說,它們有著不同的作用,擔負著不同的使命。
- 硬鏈接與原文件是平等關系,是相同數據的不同名稱,之間沒有依賴關系,它們指向文件數據,二者所占空間相同。軟連接是原文件的一個快捷方式,是不同的一個文件,所占空間不同,而且軟連接依賴原文件而存在,如果刪除原文件,軟連接就會失效。
- 硬鏈接創建后文件的鏈接數會增加(即Inode數量會發生變化),而且和原文件相同。軟連接的創建并不會增加文件的鏈接數(即對Inode值無影響)。
- 硬鏈接不支持跨分區創建,而且目錄不支持創建硬鏈接;軟連接可以跨分區創建,也可以為目錄創建軟連接。
小知識:任何目錄的節點數至少有兩個,由于不能對目錄創建硬鏈接,而軟連接又不會增加目錄的節點數,所以目錄的節點數的多少與其子目錄有一定的關系哦,原則上是成正比的。
路徑的分類以及不同之處
了解過關于軟硬鏈接的知識后,就讓我們一起看一下在Linux中路徑是什么,它們有什么不同。
在Linux中文件的路徑分為兩種一個是絕對路徑,即從根目錄到文件的完整路徑。例如:/home/test/point/last.txt
就是這個last.txt
文件的絕對路徑。而相對路徑指的是,文件相對當前工作目錄所在目錄的路徑。例如:我現在整理/etc/happy/help.txt
文件,現在要找到last.txt
這個文件的話就需要進行cat ../../home/test/point/text.txt
操作才能看到last.txt
文件的內容。而這個../../home/test/point/text.txt
便是相對于我現在的工作目錄/etc/happy/help.txt
而言,文件text.txt
的相對目錄。
對于相對路徑和絕對路徑來說它們的不同更多的是從概念上來說的,絕對路徑是文件的真正路徑,除非文件被移動,絕對路徑的表達不會發生變化;而相對路徑只是相對于我們當前工作目錄而言的文件路徑,這個路徑的表達是可以不同的。
小知識:相對路徑和絕對路徑并沒有好壞之分,它們有著各自不同的用處,但是系統可執行文件大部分用的是相對路徑。
為什么要系統可執行文件多用相對路徑創建鏈接
說了這么多,其實重點在于幫助大家在了解文件路徑和鏈接的基礎上更好的了解我們的主題:使用相對路徑創建鏈接!
就拿軟鏈接來說吧,我們用具體的事例來說明這一點。
例如某項工作需要我們為/home/happy/help.txt
在/home/happy/point/
下創建一個軟連接。我們分別為其用相對路徑和絕對路徑創建一個鏈接,(為了區分,用絕對路徑創建的鏈接成為help.link,用相對路徑創建的鏈接成為HELP.LINK)。具體操作如下:
利用絕對路徑創建鏈接:
利用相對路徑創建鏈接:
這時我們的頂頭BOSS讓我們把目錄/happy
移到另一個目錄/app
下,這時候我們的鏈接會發生什么變化呢?
可以看到,我們用絕對路徑創建的軟鏈接已經失效了,主要是因為它們共同的父目錄發生了移動,用絕對路徑的鏈接就會是錯誤的,而相對路徑創建的鏈接就不會受到影響。因此這也是系統執行文件的鏈接多用相對路徑的原因。
PS:小白投稿,如有錯誤,歡迎指正。
原創文章,作者:OscaoChaser,如若轉載,請注明出處:http://www.www58058.com/82546