99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁大數(shù)據(jù)時代Linux系統(tǒng):那些常見的硬鏈接和軟鏈接
Linux系統(tǒng):那些常見的硬鏈接和軟鏈接
2020-06-10
收藏

Linux系統(tǒng)中,有些常見的硬連接和軟連接,你知道嗎?今天就帶大家來認識一下!先從Linux系統(tǒng)中的文件系統(tǒng)說起。

1. 在Linux中一切皆為文件

Linux中有且只有一個根目錄,它就是 / (斜杠),它的子目錄有如下這些:

bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var

下面我們來解釋一些比較重要目錄的各自意義:

bin:表示二進制文件,包含了會被所有用戶使用的可執(zhí)行程序

因bin目錄下的子目錄過多,這里只截取一部分展示)

[hduser@localhost bin]$ ls [


boot:表示啟動文件的意思,包含了與Linux系統(tǒng)啟動相關(guān)的文件

dev:表示設(shè)備目錄(包含外設(shè)),它的每一個子目錄都對應(yīng)一個外設(shè)


etc:表示配置文件,包含系統(tǒng)的配置文件


home:表示用戶的私人目錄

[hduser@localhost home]$ ls hduser yzp

lib: 表示庫文件目錄 ,包含了所有對系統(tǒng)有用的庫文件

media:表示移動外設(shè)(如:USB、光盤等)目錄,我們可以通過media的子目錄來訪問這些設(shè)備

mnt:此目錄用于臨時加載一些設(shè)備

opt:用于安裝第三方軟件和插件的目錄

root:表示超級用戶的家目錄

proc:存放的是虛擬文件系統(tǒng)的目錄

sbin:包含系統(tǒng)級的可執(zhí)行程序目錄


srv:此目錄包含一些網(wǎng)絡(luò)服務(wù)啟動后所需的數(shù)據(jù)


tmp:普通用戶和程序存放臨時文件的地方

usr:是存儲Unix操作系統(tǒng)軟件資源的目錄

[hduser@localhost usr]$ ls bin etc games include lib lib64 libexec local sbin share src tmp

我們用一張圖來總結(jié)一下根目錄下各文件的含義

二、硬鏈接和軟鏈接:

1. 鏈接類型

類別:硬鏈接和軟鏈接

2. 首先我們先來了解一下什么是inode?

在linux系統(tǒng)中,文件的文件內(nèi)容會被分配到一個標(biāo)志號碼,這個標(biāo)志號碼就是inode,它是文件的索引節(jié)點

linux文件系統(tǒng)中有一塊區(qū)域叫做inode table,它就是保存inode的地方

inode保存著文件的元信息,其內(nèi)容包括:文件類型、文件權(quán)限、文件物理地址、文件長度、文件連接計數(shù)、文件存取時間、索引節(jié)點編號 、文件狀態(tài)、訪問計數(shù)、鏈接指針

Linux系統(tǒng)中,每個文件名都綁定到它的文件內(nèi)容并用文件內(nèi)容的inode標(biāo)識,文件名并不是文件的唯一標(biāo)識,Inode才是文件的唯一標(biāo)識

3. 硬鏈接原理

硬鏈接:使有鏈接關(guān)系的兩個文件共享同樣的文件內(nèi)容,擁有同樣的inode, 缺陷是只能創(chuàng)建指向文件的硬鏈接,不能指向目錄


4. 軟鏈接原理

軟鏈接:有軟鏈接關(guān)系的兩個文件,它們的inode是不同的,它可以指向目錄,軟鏈接才真正像我們在windows下的快捷方式


三、ln命令

1. 作用:用于在文件之間創(chuàng)建鏈接,ln是link("鏈接")的縮寫

2. 創(chuàng)建硬鏈接

ln a.txt b.txt


注:數(shù)字2代表有相同inode號的文件數(shù)

查看文件的inode

ls -i (i參數(shù)可以顯示文件的inode)


我們可以看到 a.txt和b.txt 文件的inode是一樣的,說明它們指向的是同一個文件內(nèi)容

我們刪除a.txt文件,對b.txt文件來說,看會發(fā)生什么情況

ls rm a.txt ls cat b.txt ls -i


我們用rm刪除了a.txt文件, 可以看到對于b.txt文件沒有任何影響,它的inode也沒有改變

說明了對于硬鏈接來說,刪除任意一方的文件,它們共同指向的文件內(nèi)容并不會從硬盤上刪除,只有同時把他們都刪除掉,它們共同指向的文件內(nèi)容才會消失,也就是那個inode才會被刪除

3. 創(chuàng)建軟鏈接

ln -s file1.txt file2.txt


file2.txt -> file1.txt 表示文件file2指向file1, lrwxrwxrwx中的 l 表示file2.txt文件是一個軟鏈接文件

查看文件的inode

ls -i


我們可以看出文件file1和文件file2的inode是不同的

這是因為文件file2是指向文件file1的,它們并沒有指向同一塊文件內(nèi)容,所以它們的inode號不相同

file2其實只是file1的一個快捷方式,它指向的是file1,所以顯示的是file1的內(nèi)容

我們刪除file1.txt對于file2.txt會有什么影響?

如果我們刪除了file2,那么對于file1來說不會有任何影響,如果刪除file1,那么file2就會變成"死鏈接",

這是因為file2指向的文件沒有了

rm file1.txt ls -lh

數(shù)據(jù)分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個參數(shù)驗證碼對象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗服務(wù)器是否宕機 new_captcha: data.new_captcha, // 用于宕機時表示是新驗證碼的宕機 product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計時完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }