資源描述:
《Linux軟鏈接與硬鏈接》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、理解Linux的硬鏈接與軟鏈接從inode了解Linux文件系統(tǒng)硬鏈接與軟鏈接是Linux文件系統(tǒng)中的一個(gè)重要概念,其涉及文件系統(tǒng)中的索引節(jié)點(diǎn)(indexnode又稱inode),而索引節(jié)點(diǎn)對(duì)象是Linux虛擬文件系統(tǒng)(VFS)的四個(gè)基本概念之一。通過(guò)剖析硬鏈接與軟鏈接的聯(lián)系與區(qū)別,我們可更好的了解Linux中VFS這一通用文件模型。并讓Linux普通用戶和系統(tǒng)管理員正確使用硬鏈接與軟鏈接,幫助文件系統(tǒng)開(kāi)發(fā)者獲取inode的相關(guān)知識(shí)。Linux的文件與目錄現(xiàn)代操作系統(tǒng)為解決信息能獨(dú)立于進(jìn)程之外被長(zhǎng)期存儲(chǔ)引入了文件,文件作為進(jìn)程創(chuàng)建信息的邏輯單元可被多個(gè)進(jìn)程并
2、發(fā)使用。在UNIX系統(tǒng)中,操作系統(tǒng)為磁盤(pán)上的文本與圖像、鼠標(biāo)與鍵盤(pán)等輸入設(shè)備及網(wǎng)絡(luò)交互等I/O操作設(shè)計(jì)了一組通用API,使他們被處理時(shí)均可統(tǒng)一使用字節(jié)流方式。換言之,UNIX系統(tǒng)中除進(jìn)程之外的一切皆是文件,而Linux保持了這一特性。為了便于文件的管理,Linux還引入了目錄(有時(shí)亦被稱為文件夾)這一概念。目錄使文件可被分類管理,且目錄的引入使Linux的文件系統(tǒng)形成一個(gè)層級(jí)結(jié)構(gòu)的目錄樹(shù)。清單1.所示的是普通Linux系統(tǒng)的頂層目錄結(jié)構(gòu),其中/dev是存放了設(shè)備相關(guān)文件的目錄。清單1.Linux系統(tǒng)的頂層目錄結(jié)構(gòu)/根目錄
├──bin存放用戶二進(jìn)制文件
├─
3、─boot存放內(nèi)核引導(dǎo)配置文件
├──dev存放設(shè)備文件
├──etc存放系統(tǒng)配置文件
├──home用戶主目錄
├──lib動(dòng)態(tài)共享庫(kù)
├──lost+found文件系統(tǒng)恢復(fù)時(shí)的恢復(fù)文件
├──media可卸載存儲(chǔ)介質(zhì)掛載點(diǎn)
├──mnt文件系統(tǒng)臨時(shí)掛載點(diǎn)
├──opt附加的應(yīng)用程序包
├──proc系統(tǒng)內(nèi)存的映射目錄,提供內(nèi)核與進(jìn)程信息
├──rootroot用戶主目錄
├──sbin存放系統(tǒng)二進(jìn)制文件
├──srv存放服務(wù)相關(guān)數(shù)據(jù)
├──syssys虛擬文件系統(tǒng)掛載點(diǎn)
├──tmp存放臨時(shí)文件
├──usr存放用戶應(yīng)用程序
└──var存放郵件、系統(tǒng)日
4、志等變化文件Linux與其他類UNIX系統(tǒng)一樣并不區(qū)分文件與目錄:目錄是記錄了其他文件名的文件。使用命令mkdir創(chuàng)建目錄時(shí),若期望創(chuàng)建的目錄的名稱與現(xiàn)有的文件名(或目錄名)重復(fù),則會(huì)創(chuàng)建失敗。#ls-F/usr/bin/zi*
/usr/bin/zip*/usr/bin/zipgrep*/usr/bin/zipnote*
/usr/bin/zipcloak*/usr/bin/zipinfo*/usr/bin/zipsplit*
#mkdir-p/usr/bin/zip
mkdir:cannotcreatedirectory`/usr/bin/zip':F
5、ileexistsLinux將設(shè)備當(dāng)做文件進(jìn)行處理,清單2.展示了如何打開(kāi)設(shè)備文件/dev/input/event5并讀取文件內(nèi)容。文件event5表示一種輸入設(shè)備,其可能是鼠標(biāo)或鍵盤(pán)等。查看文件/proc/bus/input/devices可知event5對(duì)應(yīng)設(shè)備的類型。設(shè)備文件/dev/input/event5使用read()以字符流的方式被讀取。結(jié)構(gòu)體input_event被定義在內(nèi)核頭文件linux/input.h中。清單2.打開(kāi)并讀取設(shè)備文件intfd;
structinput_eventie;
fd=open("/dev/input/event5
6、",O_RDONLY);
read(fd,&ie,sizeof(structinput_event));
printf("type=%dcode=%dvalue=%d",
ie.type,ie.code,ie.value);
close(fd);回頁(yè)首硬鏈接與軟鏈接的聯(lián)系與區(qū)別我們知道文件都有文件名與數(shù)據(jù),這在Linux上被分成兩個(gè)部分:用戶數(shù)據(jù)(userdata)與元數(shù)據(jù)(metadata)。用戶數(shù)據(jù),即文件數(shù)據(jù)塊(datablock),數(shù)據(jù)塊是記錄文件真實(shí)內(nèi)容的地方;而元數(shù)據(jù)則是文件的附加屬性,如文件大小、創(chuàng)建時(shí)間、所有者等信息。在Linux中,元數(shù)
7、據(jù)中的inode號(hào)(inode是文件元數(shù)據(jù)的一部分但其并不包含文件名,inode號(hào)即索引節(jié)點(diǎn)號(hào))才是文件的唯一標(biāo)識(shí)而非文件名。文件名僅是為了方便人們的記憶和使用,系統(tǒng)或程序通過(guò)inode號(hào)尋找正確的文件數(shù)據(jù)塊。圖1.展示了程序通過(guò)文件名獲取文件內(nèi)容的過(guò)程。圖1.通過(guò)文件名打開(kāi)文件清單3.移動(dòng)或重命名文件#stat/home/harris/source/glibc-2.16.0.tar.xz
File:`/home/harris/source/glibc-2.16.0.tar.xz'
Size:9990512Blocks:19520IOBlock:4096re
8、gularfile
Device:807h/2055