系統(tǒng)運(yùn)維
鏈接是可以將文件和目錄放在你希望它們放在的位置的另一種方式。
創(chuàng)新互聯(lián)公司專(zhuān)注為客戶(hù)提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、安化網(wǎng)絡(luò)推廣、小程序定制開(kāi)發(fā)、安化網(wǎng)絡(luò)營(yíng)銷(xiāo)、安化企業(yè)策劃、安化品牌公關(guān)、搜索引擎seo、人物專(zhuān)訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們大的嘉獎(jiǎng);創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供安化建站搭建服務(wù),24小時(shí)服務(wù)熱線(xiàn):13518219792,官方網(wǎng)址:jinyejixie.com除了 cp 和 mv 這兩個(gè)我們?cè)诒鞠盗械那耙徊糠种性敿?xì)討論過(guò)的,鏈接是可以將文件和目錄放在你希望它們放在的位置的另一種方式。它的優(yōu)點(diǎn)是可以讓你同時(shí)在多個(gè)位置顯示一個(gè)文件或目錄。
如前所述,在物理磁盤(pán)這個(gè)級(jí)別上,文件和目錄之類(lèi)的東西并不真正存在。文件系統(tǒng)是為了方便人類(lèi)使用,將它們虛構(gòu)出來(lái)。但在磁盤(pán)級(jí)別上,有一個(gè)名為分區(qū)表partition table的東西,它位于每個(gè)分區(qū)的開(kāi)頭,然后數(shù)據(jù)分散在磁盤(pán)的其余部分。
雖然有不同類(lèi)型的分區(qū)表,但是在分區(qū)開(kāi)頭的那個(gè)表包含的數(shù)據(jù)將映射每個(gè)目錄和文件的開(kāi)始和結(jié)束位置。分區(qū)表的就像一個(gè)索引:當(dāng)從磁盤(pán)加載文件時(shí),操作系統(tǒng)會(huì)查找表中的條目,分區(qū)表會(huì)告訴文件在磁盤(pán)上的起始位置和結(jié)束位置。然后磁盤(pán)頭移動(dòng)到起點(diǎn),讀取數(shù)據(jù),直到它到達(dá)終點(diǎn),您看:這就是你的文件。
(1)硬鏈接:
硬鏈接只是分區(qū)表中的一個(gè)條目,它指向磁盤(pán)上的某個(gè)區(qū)域,表示該區(qū)域已經(jīng)被分配給文件。換句話(huà)說(shuō),硬鏈接指向已經(jīng)被另一個(gè)條目索引的數(shù)據(jù)。讓我們看看它是如何工作的。
打開(kāi)終端,創(chuàng)建一個(gè)實(shí)驗(yàn)?zāi)夸洸⑦M(jìn)入:
mkdir test_dir
cd test_dir
使用 touch 創(chuàng)建一個(gè)文件:
touch test.txt
為了獲得更多的體驗(yàn)(?),在文本編輯器中打開(kāi) test.txt 并添加一些單詞。
現(xiàn)在通過(guò)執(zhí)行以下命令來(lái)建立硬鏈接:
ln test.txt hardlink_test.txt
運(yùn)行 ls,你會(huì)看到你的目錄現(xiàn)在包含兩個(gè)文件,或者看起來(lái)如此。正如你之前讀到的那樣,你真正看到的是完全相同的文件的兩個(gè)名稱(chēng): hardlink_test.txt 包含相同的內(nèi)容,沒(méi)有填充磁盤(pán)中的任何更多空間(可以嘗試使用大文件來(lái)測(cè)試),并與 test.txt 使用相同的 inode:
$ ls -li test
16515846 -rw-r--r-- 2 paul paul 14 oct 1209:50 hardlink_test.txt
16515846 -rw-r--r-- 2 paul paul 14 oct 1209:50 test.txt
ls 的 -i 選項(xiàng)顯示一個(gè)文件的 “inode 數(shù)值”?!癷node” 是分區(qū)表中的信息塊,它包含磁盤(pán)上文件或目錄的位置、上次修改的時(shí)間以及其它數(shù)據(jù)。如果兩個(gè)文件使用相同的 inode,那么無(wú)論它們?cè)谀夸洏?shù)中的位置如何,它們?cè)趯?shí)際上都是相同的文件。
(2)軟鏈接:
軟鏈接,也稱(chēng)為符號(hào)鏈接symlink,它與硬鏈接是不同的:軟鏈接實(shí)際上是一個(gè)獨(dú)立的文件,它有自己的 inode 和它自己在磁盤(pán)上的小塊地方。但它只包含一小段數(shù)據(jù),將操作系統(tǒng)指向另一個(gè)文件或目錄。
你可以使用 ln 的 -s 選項(xiàng)來(lái)創(chuàng)建一個(gè)軟鏈接:
ln -s test.txt softlink_test.txt
這將在當(dāng)前目錄中創(chuàng)建軟鏈接 softlink_test.txt,它指向 test.txt。
再次執(zhí)行 ls -li,你可以看到兩種鏈接的不同之處:
$ ls -li
total 8
16515846 -rw-r--r-- 2 paul paul 14 oct 1209:50 hardlink_test.txt
16515855 lrwxrwxrwx 1 paul paul 8 oct 1209:50 softlink_test.txt -> test.txt
16515846 -rw-r--r-- 2 paul paul 14 oct 1209:50 test.txt
hardlink_test.txt 和test.txt 包含一些文本并且字面上占據(jù)相同的空間。它們使用相同的 inode 數(shù)值。與此同時(shí),softlink_test.txt 占用少得多,并且具有不同的 inode 數(shù)值,將其標(biāo)記為完全不同的文件。使用 ls 的 -l 選項(xiàng)還會(huì)顯示軟鏈接指向的文件或目錄。
(3)為什么要用鏈接?
它們適用于帶有自己環(huán)境的應(yīng)用程序。你的 Linux 發(fā)行版通常不會(huì)附帶你需要應(yīng)用程序的最新版本。以?xún)?yōu)秀的 Blender 3D 設(shè)計(jì)軟件為例,Blender 允許你創(chuàng)建 3D 靜態(tài)圖像以及動(dòng)畫(huà)電影,人人都想在自己的機(jī)器上擁有它。問(wèn)題是,當(dāng)前版本的Blender 至少比任何發(fā)行版中的自帶的高一個(gè)版本。
幸運(yùn)的是,Blender 提供可以開(kāi)箱即用的下載。除了程序本身之外,這些軟件包還包含了 Blender需要運(yùn)行的復(fù)雜的庫(kù)和依賴(lài)框架。所有這些數(shù)據(jù)和塊都在它們自己的目錄層次中。
每次你想運(yùn)行 Blender,你都可以cd 到你下載它的文件夾并運(yùn)行:
/blender
但這很不方便。如果你可以從文件系統(tǒng)的任何地方,比如桌面命令啟動(dòng)器中運(yùn)行 blender命令會(huì)更好。
這樣做的方法是將 blender 可執(zhí)行文件鏈接到 bin/ 目錄。在許多系統(tǒng)上,你可以通過(guò)將其鏈接到文件系統(tǒng)中的任何位置來(lái)使blender 命令可用,就像這樣。
ln -s /path/to/blender_directory/blender/home//bin
你需要鏈接的另一個(gè)情況是軟件需要過(guò)時(shí)的庫(kù)。如果你用 ls -l 列出你的 /usr/lib 目錄,你會(huì)看到許多軟鏈接文件一閃而過(guò)。仔細(xì)看看,你會(huì)看到軟鏈接通常與它們鏈接到的原始文件具有相似的名稱(chēng)。你可能會(huì)看到 libblah 鏈接到 libblah.so.2,你甚至可能會(huì)注意到 libblah.so.2 相應(yīng)鏈接到原始文件 libblah.so.2.1.0。
這是因?yàn)閼?yīng)用程序通常需要安裝比已安裝版本更老的庫(kù)。問(wèn)題是,即使新版本仍然與舊版本(通常是)兼容,如果程序找不到它正在尋找的版本,程序?qū)?huì)出現(xiàn)問(wèn)題。為了解決這個(gè)問(wèn)題,發(fā)行版通常會(huì)創(chuàng)建鏈接,以便挑剔的應(yīng)用程序相信它找到了舊版本,實(shí)際上它只找到了一個(gè)鏈接并最終使用了更新的庫(kù)版本。
有些是和你自己從源代碼編譯的程序相關(guān)。你自己編譯的程序通常最終安裝在/usr/local 下,程序本身最終在 /usr/local/bin 中,它在 /usr/local/bin 目錄中查找它需要的庫(kù)。但假設(shè)你的新程序需要libblah,但 libblah 在 /usr/lib 中,這就是所有其它程序都會(huì)尋找到它的地方。你可以通過(guò)執(zhí)行以下操作將其鏈接到 /usr/local/lib:
ln -s /usr/lib/libblah /usr/local/lib
或者如果你愿意,可以 cd 到/usr/local/lib:
cd /usr/local/lib
然后使用鏈接:
ln -s ../lib/libblah
還有幾十個(gè)案例證明軟鏈接是有用的,當(dāng)你使用 Linux 更熟練時(shí),你肯定會(huì)發(fā)現(xiàn)它們,但這些是最常見(jiàn)的。下一次,我們將看一些你需要注意的鏈接怪異。
通過(guò) Linux 基金會(huì)和 edX 的免費(fèi) “Linux 簡(jiǎn)介”課程了解有關(guān)Linux 的更多信息。
分享名稱(chēng):基于SAIL-IMX6理解Linux鏈接
文章源于:http://jinyejixie.com/article42/cheiec.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營(yíng)銷(xiāo)推廣、定制開(kāi)發(fā)、面包屑導(dǎo)航、品牌網(wǎng)站建設(shè)、網(wǎng)站策劃、動(dòng)態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)