在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Linux系統中軟鏈接和硬鏈接到底有什么區別

Wildesbeast ? 來源:今日頭條 ? 作者:Linux速推文章 ? 2020-04-06 17:33 ? 次閱讀

我們知道文件都有文件名與數據,這在 Linux 上被分成兩個部分:用戶數據 (user data) 與元數據 (metadata)。用戶數據,即文件數據塊 (data block),數據塊是記錄文件真實內容的地方;而元數據則是文件的附加屬性,如文件大小、創建時間、所有者等信息。在 Linux 中,元數據中的 inode 號(inode 是文件元數據的一部分但其并不包含文件名,inode 號即索引節點號)才是文件的唯一標識而非文件名。文件名僅是為了方便人們的記憶和使用,系統或程序通過 inode 號尋找正確的文件數據塊。而有一種方法可以快速的尋找到數據元,那就是軟硬鏈接,讓我們一起來看一下吧。

什么是鏈接?

鏈接簡單說實際上是一種文件共享的方式,是 POSIX 中的概念,主流文件系統都支持鏈接文件。

它是用來干什么的?

你可以將鏈接簡單地理解為 Windows 中常見的快捷方式(或是 OS X 中的替身),Linux 中常用它來解決一些庫版本的問題,通常也會將一些目錄層次較深的文件鏈接到一個更易訪問的目錄中。在這些用途上,我們通常會使用到軟鏈接(也稱符號鏈接)。

內容

軟鏈接和硬鏈接的區別是?下面我們進入正題,來探討一下軟硬兩種鏈接到底有什么區別?

首先,從使用的角度講,兩者沒有任何區別,都與正常的文件訪問方式一樣,支持讀寫,如果是可執行文件的話也可以直接執行。

那區別在哪呢?在底層的原理上。

為了解釋清楚,我們首先在自己的一個工作目錄下創建一個文件,然后對這個文件進行鏈接的創建:

$ touch myfile && echo "This is a plain text file." > myfile $ cat myfile This is a plain text file.

現在我們創建了一個普通地不能再普通的文件了。然后我們對它創建一個硬鏈接,并查看一下當前目錄:

$ ln myfile hard $ ls -li 25869085 -rw-r--r-- 2 unixzii staff 27 7 8 17:39 hard 25869085 -rw-r--r-- 2 unixzii staff 27 7 8 17:39 myfile

在 ls 結果的最左邊一列,是文件的 inode 值,你可以簡單把它想成 C 語言中的指針。它指向了物理硬盤的一個區塊,事實上文件系統會維護一個引用計數,只要有文件指向這個區塊,它就不會從硬盤上消失。

你也看到了,這兩個文件就如同一個文件一樣,inode 值相同,都指向同一個區塊。

然后我們修改一下剛才創建的 hard 鏈接文件:

$ echo "New line" >> hard $ cat myfile This is a plain text file. New line

可以看到,這兩個文件果真就是一個文件。 下面我們看看軟鏈接(也就是符號鏈接)和它有什么區別。

$ ln -s myfile soft $ ls -li 25869085 -rw-r--r-- 2 unixzii staff 36 7 8 17:45 hard 25869085 -rw-r--r-- 2 unixzii staff 36 7 8 17:45 myfile 25869216 lrwxr-xr-x 1 unixzii staff 6 7 8 17:47 soft -> myfile

誒,你會發現,這個軟鏈接的 inode 竟然不一樣啊,并且它的文件屬性上也有一個 l 的 flag,這就說明它與之前我們創建的兩個文件根本不是一個類型。

下面我們試著刪除 myfile 文件,然后分別輸出軟硬鏈接的文件內容:

$ rm myfile $ cat hard This is a plain text file. New line $ cat soft cat: soft: No such file or directory

之前的硬鏈接沒有絲毫地影響,因為它 inode 所指向的區塊由于有一個硬鏈接在指向它,所以這個區塊仍然有效,并且可以訪問到。 然而軟鏈接的 inode 所指向的內容實際上是保存了一個絕對路徑,當用戶訪問這個文件時,系統會自動將其替換成其所指的文件路徑,然而這個文件已經被刪除了,所以自然就會顯示無法找到該文件了。

為驗證這一猜想,我們再向這個軟鏈接寫點東西:

$ echo "Something" >> soft $ ls hard myfile soft

可以看到,剛才刪除的 myfile 文件竟然又出現了!這就說明,當我們寫入訪問軟鏈接時,系統自動將其路徑替換為其所代表的絕對路徑,并直接訪問那個路徑了。

總結

總結到這里我們其實可以總結一下了:

硬鏈接: 與普通文件沒什么不同,inode 都指向同一個文件在硬盤中的區塊軟鏈接: 保存了其代表的文件的絕對路徑,是另外一種文件,在硬盤上有獨立的區塊,訪問時替換自身路徑。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    87

    文章

    11345

    瀏覽量

    210406
  • WINDOWS
    +關注

    關注

    4

    文章

    3570

    瀏覽量

    89308
收藏 人收藏

    評論

    相關推薦

    差分輸入和和單端輸入在本質上到底有什么區別

    和和單端輸入在本質 上到底有什么區別? 因為,ADC采集的信號說到底是AINP - AINN,不管單端還是差分,采集的信號都是這兩個pad的差值。 2:將單端信號接在ADC的差分輸入接口上可以用
    發表于 12-23 07:31

    深入探討Linux系統的動態鏈接庫機制

    本文將深入探討Linux系統的動態鏈接庫機制,這其中包括但不限于全局符號介入、延遲綁定以及地址無關代碼等內容。 引言 在軟件開發過程,動
    的頭像 發表于 12-18 10:06 ?192次閱讀
    深入探討<b class='flag-5'>Linux</b><b class='flag-5'>系統</b><b class='flag-5'>中</b>的動態<b class='flag-5'>鏈接</b>庫機制

    ADS1256的SYSGCAL系統增益校準和SELFGCAL增益自動校準什么區別

    請問一個問題:ADS1256的SYSGCAL系統增益校準和SELFGCAL 增益自動校準什么區別?SELFCAL 偏移和增益自動校準又有何
    發表于 12-13 12:22

    RTOS與Linux到底有什么區別

    很多做嵌入式開發的小伙伴都存在這樣的疑惑:RTOS與Linux到底有什么區別
    的頭像 發表于 10-29 09:53 ?588次閱讀

    功放和運放到底什么區別

    想請問一下功放和運放到底什么區別,感覺只要接一個小負載,運放的輸出電流也可以很大啊?到底有什么區別
    發表于 09-10 07:00

    請問VCA821和VCA824什么區別

    請問VCA821和VCA824什么區別?兩個芯片的概述基本都一樣,但是細看里面的資料會發現一些參數圖表好像是不一樣的。那到底怎么看,什么區別
    發表于 09-05 07:59

    靜態鏈接和動態鏈接

    的時候會發現,so文件里全是亂碼,這就是使用動態鏈接庫的一個好處,可以防止核心算法的泄露。 現在就可以將mymath.c刪除掉了: 直接調用庫編譯發現程序不能運行。 下面將我們自己建立的庫移動到/usr/lib目錄下試試,然后發現代碼運行成功。 可以在Linux
    發表于 08-27 10:20

    INA141U和INA141UA的區別是什么?

    INA141U和INA141UA的區別,從規格書里面,沒有看出這兩種尾椎,到底有什么區別,請TI的技術支持指導一下,謝謝了!
    發表于 08-21 06:07

    RTOS與Linux什么區別

    RTOS(Real-Time Operating System,實時操作系統)與Linux是兩種在不同應用場景下發揮重要作用的操作系統,它們在設計理念、功能特性、應用場景以及性能表現等方面存在顯著差異。以下是對RTOS與
    的頭像 發表于 08-20 16:05 ?4228次閱讀

    NE5532和NE5532A什么區別

    NE5532和NE5532A到底有什么區別,手冊翻了2遍沒看出來,麻煩指導下。
    發表于 08-20 08:31

    e2 studio鏈接腳本的修改指導

    一般而言,程序編譯經歷下圖四個階段,鏈接是編譯的最后一步,無論是在PC上編譯代碼,還是在PC上使用嵌入式gcc工具交叉編譯嵌入式代碼,編譯過程都是如下幾步。深入理解鏈接過程是嵌入式工程師必要掌握的能力!
    的頭像 發表于 06-13 10:49 ?588次閱讀
    e2 studio<b class='flag-5'>中</b><b class='flag-5'>鏈接</b>腳本的修改指導

    包電池和包電池的區別有哪些呢?

    包電池和包電池是兩種不同類型的鋰離子電池封裝方式,它們在材料、結構、性能以及應用領域上都存在顯著的區別
    的頭像 發表于 05-07 10:25 ?1.1w次閱讀

    EWSTM8-2201 or 3101安裝說明上有的說選“是”,有的說選“否”,二者到底有什么區別?對工程什么影響?

    the installation. ......... 安裝說明上有的說選“是”,有的說選“否”,二者到底有什么區別?對工程什么影響?
    發表于 04-28 08:08

    鏈接鏈接區別

    鏈接又叫符號鏈接,和原文件不是一個文件,類似Windows的快捷方式,如果原始文件被刪除,所有指向它的符號鏈接也就都被破壞了
    的頭像 發表于 04-19 10:09 ?1271次閱讀
    <b class='flag-5'>軟</b><b class='flag-5'>鏈接</b>與<b class='flag-5'>硬</b><b class='flag-5'>鏈接</b>的<b class='flag-5'>區別</b>

    什么是開關?什么是開關 開關和開關的優缺點

    什么是開關?什么是開關 開關和開關的優缺點 開關和開關是電力
    的頭像 發表于 02-20 11:43 ?7852次閱讀
    主站蜘蛛池模板: 亚洲最新在线 | 日本免费黄色片 | 夜夜狠| 男女免费视频 | 欧美性一区二区三区五区 | 免费观看在线观看 | 怡红院网址 | 天堂最新版资源www在线 | 免费看大美女大黄大色 | yiren22亚洲综合高清一区 | 成人欧美网站 | 2017天天操 | 免费网站色 | 久久性感美女视频 | 国产精品人成在线播放新网站 | 国产又黄又爽又猛的免费视频播放 | 免费观看黄色网页 | 国产视频综合 | 狠狠躁夜夜躁人人躁婷婷视频 | 免费啪视频观在线视频在线 | 69久久| 乱欲小说又粗又大 | 日本三级视频在线观看 | 99精品偷自拍 | 国产玖玖在线 | 天天夜夜狠狠一区二区三区 | 九色视频在线看 | 精品一精品国产一级毛片 | 999久久久免费精品国产牛牛 | 日韩久久精品视频 | 亚洲天天综合 | 欧美ol丝袜高跟秘书在线播放 | 黄色工厂在线播放 | 日本二区免费一片黄2019 | 国产午夜精品久久久久 | 丁香五香天堂网卡 | 欧美影院 | 美女网站在线观看视频18 | 国产久热精品 | 欧美午夜视频 | 欧美极品xxxxⅹ另类 |