當(dāng)前位置:首頁 > 嵌入式 > 嵌入式軟件
[導(dǎo)讀] 一 、Linux文件結(jié)構(gòu)文件結(jié)構(gòu)是文件存放在磁盤等存貯設(shè)備上的組織方法。主要體現(xiàn)在對文件和目錄的組織上。目錄提供了管理文件的一個(gè)方便而有效的途徑。Linux使用標(biāo)準(zhǔn)的目錄

 一 、Linux文件結(jié)構(gòu)

文件結(jié)構(gòu)是文件存放在磁盤等存貯設(shè)備上的組織方法。主要體現(xiàn)在對文件和目錄的組織上。

目錄提供了管理文件的一個(gè)方便而有效的途徑。

Linux使用標(biāo)準(zhǔn)的目錄結(jié)構(gòu),在安裝的時(shí)候,安裝程序就已經(jīng)為用戶創(chuàng)建了文件系統(tǒng)和完整而固定的目錄組成形式,并指定了每個(gè)目錄的作用和其中的文件類型。

/根目錄

┏━━┳━━━┳━━━┳━━━╋━━━┳━━━┳━━━┳━━━┓

┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃

bin home dev etc lib sbin tmp usr var

┃ ┃

┏━┻━┓ ┏━━┳━━┳━━┳━┻━┳━━┓

┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃

rc.d cron.d X11R6 src lib local man bin

┏━━━┳━━┳━┻━┳━━━┓

┃ ┃ ┃ ┃ ┃

init.d rc0.d rc1.d rc2.d …… linux bin lib src

Linux采用的是樹型結(jié)構(gòu)。最上層是根目錄,其他的所有目錄都是從根目錄出發(fā)而生成的。微軟的DOS和windows也是采用樹型結(jié)構(gòu),但是在DOS和 windows中這樣的樹型結(jié)構(gòu)的根是磁盤分區(qū)的盤符,有幾個(gè)分區(qū)就有幾個(gè)樹型結(jié)構(gòu),他們之間的關(guān)系是并列的。但是在linux中,無論操作系統(tǒng)管理幾個(gè)磁盤分區(qū),這樣的目錄樹只有一個(gè)。從結(jié)構(gòu)上講,各個(gè)磁盤分區(qū)上的樹型目錄不一定是并列的。

如果這樣講不好理解的話,我來舉個(gè)例子:

有一塊硬盤,分成了4個(gè)分區(qū),分別是/;/boot;/usr和windows下的fat

對于/和/boot或者/和/usr,它們是從屬關(guān)系;對于/boot和/usr,它們是并列關(guān)系。

如果我把windows下的fat分區(qū)掛載到/mnt/winc下,(掛載??哦,別急,呵呵,一會(huì)就講,一會(huì)就講。)那么對于/mnt/winc和/usr或/mnt/winc和/boot來說,它們是從屬于目錄樹上沒有任何關(guān)系的兩個(gè)分支。

因?yàn)閘inux是一個(gè)多用戶系統(tǒng),制定一個(gè)固定的目錄規(guī)劃有助于對系統(tǒng)文件和不同的用戶文件進(jìn)行統(tǒng)一管理。但就是這一點(diǎn)讓很多從windows轉(zhuǎn)到linux的初學(xué)者感到頭疼。下面列出了linux下一些主要目錄的功用。

/bin 二進(jìn)制可執(zhí)行命令

/dev 設(shè)備特殊文件

/etc 系統(tǒng)管理和配置文件

/etc/rc.d 啟動(dòng)的配置文件和腳本

/home 用戶主目錄的基點(diǎn),比如用戶user的主目錄就是/home/user,可以用~user表示

/lib 標(biāo)準(zhǔn)程序設(shè)計(jì)庫,又叫動(dòng)態(tài)鏈接共享庫,作用類似windows里的.dll文件

/sbin 系統(tǒng)管理命令,這里存放的是系統(tǒng)管理員使用的管理程序

/tmp 公用的臨時(shí)文件存儲(chǔ)點(diǎn)

/root 系統(tǒng)管理員的主目錄(呵呵,特權(quán)階級)

/mnt 系統(tǒng)提供這個(gè)目錄是讓用戶臨時(shí)掛載其他的文件系統(tǒng)。

/lost+found 這個(gè)目錄平時(shí)是空的,系統(tǒng)非正常關(guān)機(jī)而留下“無家可歸”的文件(windows下叫什么.chk)就在這里

/proc 虛擬的目錄,是系統(tǒng)內(nèi)存的映射。可直接訪問這個(gè)目錄來獲取系統(tǒng)信  息。

/var 某些大文件的溢出區(qū),比方說各種服務(wù)的日志文件

/usr 最龐大的目錄,要用到的應(yīng)用程序和文件幾乎都在這個(gè)目錄。其中包  含:

/usr/X11R6 存放X window的目錄

/usr/bin 眾多的應(yīng)用程序

/usr/sbin 超級用戶的一些管理程序

/usr/doc linux文檔

/usr/include linux下開發(fā)和編譯應(yīng)用程序所需要的頭文件

/usr/lib 常用的動(dòng)態(tài)鏈接庫和軟件包的配置文件

/usr/man 幫助文檔

/usr/src 源代碼,linux內(nèi)核的源代碼就放在/usr/src/linux里

/usr/local/bin 本地增加的命令

/usr/local/lib 本地增加的庫

二 、linux文件系統(tǒng)

文件系統(tǒng)指文件存在的物理空間,linux系統(tǒng)中每個(gè)分區(qū)都是一個(gè)文件系統(tǒng),都有自己的目錄層次結(jié)構(gòu)。linux會(huì)將這些分屬不同分區(qū)的、單獨(dú)的文件系統(tǒng)按一定的方式形成一個(gè)系統(tǒng)的總的目錄層次結(jié)構(gòu)。一個(gè)操作系統(tǒng)的運(yùn)行離不開對文件的操作,因此必然要擁有并維護(hù)自己的文件系統(tǒng)。

Llinux文件系統(tǒng)使用索引節(jié)點(diǎn)來記錄文件信息,作用像windows的文件分配表。

索引節(jié)點(diǎn)是一個(gè)結(jié)構(gòu),它包含了一個(gè)文件的長度、創(chuàng)建及修改時(shí)間、權(quán)限、所屬關(guān)系、磁盤中的位置等信息。一個(gè)文件系統(tǒng)維護(hù)了一個(gè)索引節(jié)點(diǎn)的數(shù)組,每個(gè)文件或目錄都與索引節(jié)點(diǎn)數(shù)組中的唯一一個(gè)元素對應(yīng)。系統(tǒng)給每個(gè)索引節(jié)點(diǎn)分配了一個(gè)號碼,也就是該節(jié)點(diǎn)在數(shù)組中的索引號,稱為索引節(jié)點(diǎn)號。

linux文件系統(tǒng)將文件索引節(jié)點(diǎn)號和文件名同時(shí)保存在目錄中。所以,目錄只是將文件的名稱和它的索引節(jié)點(diǎn)號結(jié)合在一起的一張表,目錄中每一對文件名稱和索引節(jié)點(diǎn)號稱為一個(gè)連接。

對于一個(gè)文件來說有唯一的索引節(jié)點(diǎn)號與之對應(yīng),對于一個(gè)索引節(jié)點(diǎn)號,卻可以有多個(gè)文件名與之對應(yīng)。因此,在磁盤上的同一個(gè)文件可以通過不同的路徑去訪問它。

可以用ln命令對一個(gè)已經(jīng)存在的文件再建立一個(gè)新的連接,而不復(fù)制文件的內(nèi)容。連接有軟連接和硬連接之分,軟連接又叫符號連接。它們各自的特點(diǎn)是:

硬連接:原文件名和連接文件名都指向相同的物理地址。

目錄不能有硬連接;硬連接不能跨越文件系統(tǒng)(不能跨越不同的分區(qū))

文件在磁盤中只有一個(gè)拷貝,節(jié)省硬盤空間;

由于刪除文件要在同一個(gè)索引節(jié)點(diǎn)屬于唯一的連接時(shí)才能成功,因此可以防止不必要的誤刪除。

符號連接:用ln -s命令建立文件的符號連接符號連接是linux特殊文件的一種,作為一個(gè)文件,它的數(shù)據(jù)是它所連接的文件的路徑名。類似windows下的快捷方式。

可以刪除原有的文件而保存連接文件,沒有防止誤刪除功能。

這一段的的內(nèi)容過于抽象,又是節(jié)點(diǎn)又是數(shù)組的,我已經(jīng)盡量通俗再通俗了,又不好加例子作演示。大家如果還是云里霧里的話,我也沒有什么辦法了,只有先記住,日后在實(shí)際應(yīng)用中慢慢體會(huì)、理解了。這也是我學(xué)習(xí)的一個(gè)方法吧。

三 、掛載文件系統(tǒng)

由上一節(jié)知道,linux系統(tǒng)中每個(gè)分區(qū)都是一個(gè)文件系統(tǒng),都有自己的目錄層次結(jié)構(gòu)。linux會(huì)將這些分屬不同分區(qū)的、單獨(dú)的文件系統(tǒng)按一定的方式形成一個(gè)系統(tǒng)的總的目錄層次結(jié)構(gòu)。這里所說的“按一定方式”就是指的掛載。[!--empirenews.page--]

將一個(gè)文件系統(tǒng)的頂層目錄掛到另一個(gè)文件系統(tǒng)的子目錄上,使它們成為一個(gè)整體,稱為掛載。把該子目錄稱為掛載點(diǎn)。

舉個(gè)例子吧:

根分區(qū):

/根目錄

┏━━━━┳━━━━━┳━━━━━┳━━━━━╋━━━━━┳━━━━━┳━━━━━┳━━━━━┓

┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃

bin home dev etc lib sbin tmp usr var

┏━┻━┓

┃ ┃

rc.d cron.d

┏━━━┳━━━┳━┻━┳━━━━┓

┃ ┃ ┃ ┃ ┃

init.d rc0.d rc1.d rc2.d ……

/usr分區(qū) :

usr

┏━━━━┳━━━╋━━━┳━━━┳━━━┓

┃ ┃ ┃ ┃ ┃ ┃

X11R6 src lib local man bin

┃ ┃

┃ ┏━━━╋━━━┓

┃ ┃ ┃ ┃

linux bin lib src

掛載之后就形成了文章開始時(shí)的那個(gè)圖。像不像掛上去的?

注意:1、掛載點(diǎn)必須是一個(gè)目錄。

2、一個(gè)分區(qū)掛載在一個(gè)已存在的目錄上,這個(gè)目錄可以不為空,但掛載后這個(gè)目錄下以前的內(nèi)容將不可用。

對于其他操作系統(tǒng)建立的文件系統(tǒng)的掛載也是這樣。但是需要理解的是:光盤、軟盤、其他操作系統(tǒng)使用的文件系統(tǒng)的格式與linux使用的文件系統(tǒng)格式是不一樣的。光盤是ISO9660;軟盤是fat16或ext2;windows NT是fat16、NTFS;windows98是fat16、fat32;windows2000和windowsXP是fat16、fat32、 NTFS。掛載前要了解linux是否支持所要掛載的文件系統(tǒng)格式。

掛載時(shí)使用mount命令:

格式:mount [-參數(shù)] [設(shè)備名稱] [掛載點(diǎn)]

其中常用的參數(shù)有

-t 指定設(shè)備的文件系統(tǒng)類型,常見的有:

minix linux最早使用的文件系統(tǒng)

ext2 linux目前常用的文件系統(tǒng)

msdos MS-DOS的fat,就是fat16

vfat windows98常用的fat32

nfs 網(wǎng)絡(luò)文件系統(tǒng)

iso9660 CD-ROM光盤標(biāo)準(zhǔn)文件系統(tǒng)

ntfs windows NT 2000的文件系統(tǒng)

hpfs OS/2文件系統(tǒng)

auto 自動(dòng)檢測文件系統(tǒng)

-o 指定掛載文件系統(tǒng)時(shí)的選項(xiàng)。有些也可用在/etc/fstab中。常用的  有

codepage=XXX 代碼頁

iocharset=XXX 字符集

ro 以只讀方式掛載

rw 以讀寫方式掛載

nouser 使一般用戶無法掛載

user 可以讓一般用戶掛載設(shè)備

提醒一下,mount命令沒有建立掛載點(diǎn)的功能,因此你應(yīng)該確保執(zhí)行mount命令時(shí),掛載點(diǎn)已經(jīng)存在。(不懂?說白了點(diǎn)就是你要把文件系統(tǒng)掛載到哪,首先要先建上個(gè)目錄。這樣OK?)

例子:windows98裝在hda1分區(qū),同時(shí)計(jì)算機(jī)上還有軟盤和光盤需要掛載。

# mk /mnt/winc

# mk /mnt/floppy

# mk /mnt/cdrom

# mount -t vfat /dev/hda1 /mnt/winc

# mount -t msdos /dev/fd0 /mnt/floppy

# mount -t iso9660 /dev/cdrom /mnt/cdrom

現(xiàn)在就可以進(jìn)入/mnt/winc等目錄讀寫這些文件系統(tǒng)了。

要保證最后兩行的命令不出錯(cuò),要確保軟驅(qū)和光驅(qū)里有盤。(要是硬盤的磁盤片也可以經(jīng)常隨時(shí)更換的話,我想就不會(huì)犯這樣的錯(cuò)誤了 :-> )

如果你的windows98目錄里有中文文件名,使用上面的命令掛載后,顯示的是一堆亂碼。這就要用到 -o 參數(shù)里的codepage iocharset選項(xiàng)。codepage指定文件系統(tǒng)的代碼頁,簡體中文中文代碼是936;iocharset指定字符集,簡體中文一般用cp936或 gb2312。

當(dāng)掛載的文件系統(tǒng)linux不支持時(shí),mount一定報(bào)錯(cuò),如windows2000的ntfs文件系統(tǒng)。可以重新編譯linux內(nèi)核以獲得對該文件系統(tǒng)的支持。關(guān)于重新編譯linux內(nèi)核,就不在這里說了。

四 、自動(dòng)掛載

每次開機(jī)訪問windows分區(qū)都要運(yùn)行mount命令顯然太煩瑣,為什么訪問其他的linux分區(qū)不用使用mount命令呢?

其實(shí),每次開機(jī)時(shí),linux自動(dòng)將需要掛載的linux分區(qū)掛載上了。那么我們是不是可以設(shè)定讓linux在啟動(dòng)的時(shí)候也掛載我們希望掛載的分區(qū),如windows分區(qū),以實(shí)現(xiàn)文件系統(tǒng)的自動(dòng)掛載呢?

這是完全可以的。在/etc目錄下有個(gè)fstab文件,它里面列出了linux開機(jī)時(shí)自動(dòng)掛載的文件系統(tǒng)的列表。我的/etc/fstab文件如下:

/dev/hda2 / ext3 defaults 1 1

/dev/hda1 /boot ext3 defaults 1 2

none /dev/pts devpts gid=5,mode=620 0 0

none /proc proc defaults 0 0

none /dev/shm tmpfs defaults 0 0

/dev/hda3 swap swap defaults 0 0

/dev/cdrom /mnt/cdrom iso9660 noauto,codepage=936,iocharset=gb2312 0 0

/dev/fd0 /mnt/floppy auto noauto,owner,kudzu 0 0

/dev/hdb1 /mnt/winc vfat defaults,codepage=936,iocharset=cp936 0 0

/dev/hda5 /mnt/wind vfat defaults,codepage=936,iocharset=cp936 0 0

在/etc/fstab文件里,第一列是掛載的文件系統(tǒng)的設(shè)備名,第二列是掛載點(diǎn),第三列是掛載的文件系統(tǒng)類型,第四列是掛載的選項(xiàng),選項(xiàng)間用逗號分隔。第五六列不知道是什么意思,還望高手指點(diǎn)。

在最后兩行是我手工添加的windows下的C;D盤,加了codepage=936和iocharset=cp936參數(shù)以支持中文文件名。參數(shù)defaults實(shí)際上包含了一組默認(rèn)參數(shù):

rw 以可讀寫模式掛載

suid 開啟用戶ID和群組ID設(shè)置位

dev 可解讀文件系統(tǒng)上的字符或區(qū)塊設(shè)備

exec 可執(zhí)行二進(jìn)制文件

auto 自動(dòng)掛載

nouser 使一般用戶無法掛載

async 以非同步方式執(zhí)行文件系統(tǒng)的輸入輸出操作

大家可以看到在這個(gè)列表里,光驅(qū)和軟驅(qū)是不自動(dòng)掛載的,參數(shù)設(shè)置為noauto。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動(dòng)力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉