硬鏈接與軟鏈接

硬連接:

         其本質就是:一個文件,多個名字。注意:目錄是沒有硬鏈接的。

ln filename linkname創建硬鏈接,注意源文件和鏈接文件位置順序,硬鏈接不可以跨分區建。

在創建硬鏈接時會增加硬連接數,可以通過ls –l查看,如下圖所示的,可看到硬鏈接數。

硬鏈接與軟鏈接

硬鏈接創建好,源文件和鏈接文件實際上是兩個獨立的文件,對任何一方進行刪除都不會影響到另一方,但是修改其中一方,另外一方也會變:例如:

 

一:建立硬鏈接:(因為硬鏈接不能跨分區,所以我先拷貝了/etc/passwd/app下,然后創建了硬鏈接文件pwd。)在圖中可以看到在剛拷貝過來passwd后,其硬鏈接數顯示為1,建立硬鏈接后顯示為2,所以創建硬鏈接實際上實在增加硬連接數,一個文件,不同名字而已。

 硬鏈接與軟鏈接

二:然后對鏈接文件pwd進行修改:(這里用的是nanopwd進行的修改,下方有一些輔助按鍵說明,寫完之后呢,按ctrl +X鍵進行保存退出,再按y鍵確定,最后回車結束。)

硬鏈接與軟鏈接

三:在源文件passwd里可以看到修改的數據:(因為內容較長,在這里我就截取了一部分,最主要是看文件的變化),修改鏈接文件源文件也會隨著改變,當然,反過來也一樣。這里就省略了。

 硬鏈接與軟鏈接

四:把源文件刪除后,可以看到鏈接文件依然存在,而且還可以被訪問,硬鏈接數減少為1,所以,硬連接的文件都是獨立存在的,刪除任一方,另一方都不會改變,只是硬連接數的增加和減少。

硬鏈接與軟鏈接


對于硬鏈接數,舉個例子:在/app下創建一個目錄(目錄是不能創建硬鏈接,但不代表沒有硬鏈接數),/app/a/b,可以ls –l查看一下a的硬鏈接數為3,如下圖所示,有三個inode(索引號)一樣的三個文件,分別是,/app下的100663680 a/app/a下的當前目錄100663680 . ;/app/a/b下的上一級目錄100663680 .. 。這三個文件。(inode號是按照inode表自動生成的,)

硬鏈接與軟鏈接

 

 

 

軟鏈接呢,也可以叫做快捷方式,因為鏈接文件只是存了源文件的一個路徑,

ln –s filename linkname創建軟鏈接,軟鏈接可以跨分區建。

而且在創建軟鏈接后,改變鏈接文件不會改變源文件,但若是改變了源文件,那么鏈接文件也會發生變化,因為在執行鏈接文件的時候,其實是順著保存的源文件的路徑去找的源文件然后執行的源文件。例如:

 

一:新建軟鏈接,會看到和硬鏈接有所不同,硬鏈接都是文件,軟鏈接是一個快捷方式,鏈接文件有顏色,但是硬連接數沒有發生改變。

硬鏈接與軟鏈接

二:對軟鏈接文件pwd進行編輯修改內容,

硬鏈接與軟鏈接

三: 可以看到,和硬鏈接一樣,源文件也被改變:

硬鏈接與軟鏈接

四:刪除鏈接文件對源文件沒有影響,還是能查看內容,但是…..

硬鏈接與軟鏈接

五: 刪除源文件后,鏈接文件無內容,證明了軟鏈接存的只是路徑,

硬鏈接與軟鏈接

 

在創建軟鏈接時,出現l一些問題:以下是我在創建過程中出現的問題:

        

/app下有兩個目錄dir1dir2,在dir1下有一個目錄文件issue,dir2下有一個目錄sub,想在/app/dir2/sub下產生issue的鏈接:如下圖所示:

 

一:其中(-p)是你多級創建目錄,tree可以直觀的顯示出結構,但此時可以看到,創建的鏈接文件是紅色的,也就是錯誤的做法,因為sub是個空目錄,多在sub后加了個“/”,指到了它的下一級,

硬鏈接與軟鏈接

 

二:這種情況下才是正確的:相當于在sub下新建了一個test的目錄用于存放鏈接/app/dir1/issue.

硬鏈接與軟鏈接

 

 

三:還有這種,相當于在在sub下建了一個和/app/dir1/issue一樣的名字作為它的鏈接。

硬鏈接與軟鏈接

 

四:還有一種方法,因為要做dir2/sub下建立軟鏈接,所以就先進到sub下,用 “.” 表示當前路徑,讓源文件使用絕對路徑有一定的弊端:把issuedir1下挪走,軟鏈接就會發生變化:

硬鏈接與軟鏈接

執行了mv后,issue的路徑發生了變化,從之前的/app/dir1/issue,調到了/app/dir2下,

因此軟鏈接失效了,

硬鏈接與軟鏈接

五:相對于app建的;把dir2/sub/issue挪到當前目錄也就是/app下,就可以用了。

硬鏈接與軟鏈接

 

綜上所述呢,在建立軟鏈接時,要看一下在哪一級創建的,所在目錄不同,創建時的路徑也不同,

原創文章,作者:M.Sun,如若轉載,請注明出處:http://www.www58058.com/81916

(0)
M.SunM.Sun
上一篇 2017-07-20 18:27
下一篇 2017-07-20 20:40

相關推薦

  • 計算機的組成和Linux發行版本介紹

    計算機的組成及功能 計算機的五大組成,如下 各部分的作用; 控制單元和算數邏輯單元是CPU的兩個主要組成部分  控制單元主要協調各組件與各單元間的工作  算數邏輯單元主要負責程序運算與邏輯判斷 內存,DRANM(Dynamic Random Access Memory)動態隨機訪問內存;CPU讀取的數據都是從內存讀取來的。 輸入單元,下指…

    2017-07-02
  • Bash Shell之數組簡介

    Bash Shell之數組簡介   一、數組基本概念   數組是內存中的存儲空間,連續的多個存儲單元;bash中只支持一維數組,支持稀疏格式 ,參數個數沒有限制。 二、數組基本語法格式   1、聲明一個數組          declare…

    Linux干貨 2015-05-11
  • 我的第一篇博客

    Hello,大家好,以后我也是博客中的一員了,希望能和大家共同進步。

    Linux干貨 2017-07-11
  • 關于大型網站技術演進的思考(四):存儲的瓶頸(4)

    原文出處: 夏天的森林    如果數據庫需要進行水平拆分,這其實是一件很開心的事情,因為它代表公司的業務正在迅猛的增長,對于開發人員而言那就是有不盡的項目可以做,雖然會感覺很忙,但是人過的充實,心里也踏實。 數據庫水平拆分簡單說來就是先將原數據庫里的一張表在做垂直拆分出來放置在單獨的數據庫和單獨的表里后更進一步的把本來是一個整體…

    2015-03-11
  • Linux常見發行版本以及Linux哲學思想

    什么是Linux?  Linux是一套免費使用和自由傳播的類Unix操作系統,是一個基于POSIX和UNIX的多用戶、多任務、支持多線程和多CPU的操作系統。它能運行主要的UNIX工具軟件、應用程序和網絡協議。它支持32位和64位硬件。Linux繼承了Unix以網絡為核心的設計思想,是一個性能穩定的多用戶網絡操作系統。  Linux操作系…

    Linux干貨 2016-08-15
  • linux特殊權限管理

    特殊權限:SUID, SGID, STICKY 正常情況下:  1、進程以某用戶的身份運行; 進程是發起此進程用戶的代理,因此以此用戶的身份和權限完成所有操作; 2、權限匹配模型: (1) 判斷進程的屬主,是否為被訪問的文件屬主;如果是,則應用屬主的權限;否則進入第2步; (2) 判斷進程的屬主,是…

    Linux干貨 2015-12-19
欧美性久久久久