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