自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

理解Linux的硬鏈接與軟鏈接(一)

系統(tǒng) Linux
除了 cp 和 mv 這兩個我們在本系列的前一部分中詳細討論過的,鏈接是可以將文件和目錄放在你希望它們放在的位置的另一種方式。它的優(yōu)點是可以讓你同時在多個位置顯示一個文件或目錄。

[[248952]]

鏈接是可以將文件和目錄放在你希望它們放在的位置的另一種方式。

除了 cpmv 這兩個我們在本系列的前一部分中詳細討論過的,鏈接是可以將文件和目錄放在你希望它們放在的位置的另一種方式。它的優(yōu)點是可以讓你同時在多個位置顯示一個文件或目錄。

如前所述,在物理磁盤這個級別上,文件和目錄之類的東西并不真正存在。文件系統(tǒng)是為了方便人類使用,將它們虛構出來。但在磁盤級別上,有一個名為分區(qū)表partition table的東西,它位于每個分區(qū)的開頭,然后數(shù)據(jù)分散在磁盤的其余部分。

雖然有不同類型的分區(qū)表,但是在分區(qū)開頭的那個表包含的數(shù)據(jù)將映射每個目錄和文件的開始和結束位置。分區(qū)表的就像一個索引:當從磁盤加載文件時,操作系統(tǒng)會查找表中的條目,分區(qū)表會告訴文件在磁盤上的起始位置和結束位置。然后磁盤頭移動到起點,讀取數(shù)據(jù),直到它到達終點,您看:這就是你的文件。

硬鏈接

硬鏈接只是分區(qū)表中的一個條目,它指向磁盤上的某個區(qū)域,表示該區(qū)域已經(jīng)被分配給文件。換句話說,硬鏈接指向已經(jīng)被另一個條目索引的數(shù)據(jù)。讓我們看看它是如何工作的。

打開終端,創(chuàng)建一個實驗目錄并進入:

  1. mkdir test_dir
  2. cd test_dir

使用 touch 創(chuàng)建一個文件:

  1. touch test.txt

為了獲得更多的體驗(?),在文本編輯器中打開 test.txt 并添加一些單詞。

現(xiàn)在通過執(zhí)行以下命令來建立硬鏈接:

  1. ln test.txt hardlink_test.txt

運行 ls,你會看到你的目錄現(xiàn)在包含兩個文件,或者看起來如此。正如你之前讀到的那樣,你真正看到的是完全相同的文件的兩個名稱: hardlink_test.txt 包含相同的內(nèi)容,沒有填充磁盤中的任何更多空間(可以嘗試使用大文件來測試),并與 test.txt 使用相同的 inode:

  1. $ ls -li *test*
  2. 16515846 -rw-r--r-- 2 paul paul 14 oct 12 09:50 hardlink_test.txt
  3. 16515846 -rw-r--r-- 2 paul paul 14 oct 12 09:50 test.txt

ls-i 選項顯示一個文件的 “inode 數(shù)值”。“inode” 是分區(qū)表中的信息塊,它包含磁盤上文件或目錄的位置、上次修改的時間以及其它數(shù)據(jù)。如果兩個文件使用相同的 inode,那么無論它們在目錄樹中的位置如何,它們在實際上都是相同的文件。

軟鏈接

軟鏈接,也稱為符號鏈接symlink,它與硬鏈接是不同的:軟鏈接實際上是一個獨立的文件,它有自己的 inode 和它自己在磁盤上的小塊地方。但它只包含一小段數(shù)據(jù),將操作系統(tǒng)指向另一個文件或目錄。

你可以使用 ln-s 選項來創(chuàng)建一個軟鏈接:

  1. ln -s test.txt softlink_test.txt

這將在當前目錄中創(chuàng)建軟鏈接 softlink_test.txt,它指向 test.txt

再次執(zhí)行 ls -li,你可以看到兩種鏈接的不同之處:

  1. $ ls -li
  2. total 8
  3. 16515846 -rw-r--r-- 2 paul paul 14 oct 12 09:50 hardlink_test.txt
  4. 16515855 lrwxrwxrwx 1 paul paul 8 oct 12 09:50 softlink_test.txt -> test.txt
  5. 16515846 -rw-r--r-- 2 paul paul 14 oct 12 09:50 test.txt

hardlink_test.txttest.txt 包含一些文本并且字面上占據(jù)相同的空間。它們使用相同的 inode 數(shù)值。與此同時,softlink_test.txt 占用少得多,并且具有不同的 inode 數(shù)值,將其標記為完全不同的文件。使用 ls-l 選項還會顯示軟鏈接指向的文件或目錄。

為什么要用鏈接?

它們適用于帶有自己環(huán)境的應用程序。你的 Linux 發(fā)行版通常不會附帶你需要應用程序的***版本。以優(yōu)秀的 Blender 3D 設計軟件為例,Blender 允許你創(chuàng)建 3D 靜態(tài)圖像以及動畫電影,人人都想在自己的機器上擁有它。問題是,當前版本的 Blender 至少比任何發(fā)行版中的自帶的高一個版本。

幸運的是,Blender 提供可以開箱即用的下載。除了程序本身之外,這些軟件包還包含了 Blender 需要運行的復雜的庫和依賴框架。所有這些數(shù)據(jù)和塊都在它們自己的目錄層次中。

每次你想運行 Blender,你都可以 cd 到你下載它的文件夾并運行:

  1. ./blender

但這很不方便。如果你可以從文件系統(tǒng)的任何地方,比如桌面命令啟動器中運行 blender 命令會更好。

這樣做的方法是將 blender 可執(zhí)行文件鏈接到 bin/ 目錄。在許多系統(tǒng)上,你可以通過將其鏈接到文件系統(tǒng)中的任何位置來使 blender 命令可用,就像這樣。

  1. ln -s /path/to/blender_directory/blender /home/<username>/bin

你需要鏈接的另一個情況是軟件需要過時的庫。如果你用 ls -l 列出你的 /usr/lib 目錄,你會看到許多軟鏈接文件一閃而過。仔細看看,你會看到軟鏈接通常與它們鏈接到的原始文件具有相似的名稱。你可能會看到 libblah 鏈接到 libblah.so.2,你甚至可能會注意到 libblah.so.2 相應鏈接到原始文件 libblah.so.2.1.0。

這是因為應用程序通常需要安裝比已安裝版本更老的庫。問題是,即使新版本仍然與舊版本(通常是)兼容,如果程序找不到它正在尋找的版本,程序?qū)霈F(xiàn)問題。為了解決這個問題,發(fā)行版通常會創(chuàng)建鏈接,以便挑剔的應用程序相信它找到了舊版本,實際上它只找到了一個鏈接并最終使用了更新的庫版本。

有些是和你自己從源代碼編譯的程序相關。你自己編譯的程序通常最終安裝在 /usr/local 下,程序本身最終在 /usr/local/bin 中,它在 /usr/local/bin 目錄中查找它需要的庫。但假設你的新程序需要 libblah,但 libblah/usr/lib 中,這就是所有其它程序都會尋找到它的地方。你可以通過執(zhí)行以下操作將其鏈接到 /usr/local/lib

  1. ln -s /usr/lib/libblah /usr/local/lib

或者如果你愿意,可以 cd/usr/local/lib

  1. cd /usr/local/lib

然后使用鏈接:

  1. ln -s ../lib/libblah

還有幾十個案例證明軟鏈接是有用的,當你使用 Linux 更熟練時,你肯定會發(fā)現(xiàn)它們,但這些是最常見的。下一次,我們將看一些你需要注意的鏈接怪異。 

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2018-11-09 10:30:05

Linux硬鏈接軟鏈接

2017-01-15 15:27:51

Linux軟連接和硬鏈接

2019-06-21 10:52:28

軟連接硬鏈接Linux

2022-02-28 09:44:09

Linux硬鏈接軟鏈接

2019-11-01 11:06:02

Linux操作系統(tǒng)Windows

2020-06-01 19:00:42

Linux軟鏈接硬鏈接

2023-11-15 08:27:46

Linux系統(tǒng)

2022-10-21 08:18:54

Linuxln 命令

2021-06-18 08:15:37

Linux軟鏈接硬鏈接

2010-05-04 13:09:21

Unix操作系統(tǒng)

2010-07-09 10:13:42

UDP協(xié)議

2021-07-16 10:20:56

Linux 硬鏈接Linux 系統(tǒng)

2023-07-25 16:55:15

Linuxinode

2023-03-05 16:36:14

Linux鏈接目標文件

2021-11-15 05:37:19

Linux 符號鏈接命令

2011-08-25 09:53:43

SOA云計算

2023-02-13 11:26:03

符號鏈接Linux

2010-03-10 09:27:36

Linux鏈接文件類型

2023-09-27 16:39:38

2009-01-09 22:33:19

服務器磁盤RAID
點贊
收藏

51CTO技術棧公眾號