Linux快速入門(mén)之:Linux文件及文件系統(tǒng)
在安裝完Linux之后,下面先對(duì)Linux中一些非常重要的概念做一些介紹,以便進(jìn)一步學(xué)習(xí)使用Linux。
1.3.1文件類(lèi)型及文件屬性1.文件類(lèi)型Linux中的文件類(lèi)型與Windows有顯著的區(qū)別,其中最顯著的區(qū)別在于Linux對(duì)目錄和設(shè)備都當(dāng)作文件來(lái)進(jìn)行處理,這樣就簡(jiǎn)化了對(duì)各種不同類(lèi)型設(shè)備的處理,提高了效率。Linux中主要的文件類(lèi)型分為4種:普通文件、目錄文件、鏈接文件和設(shè)備文件。
(1)普通文件。
普通文件同Windows中的文件一樣,是用戶日常使用最多的文件。它包括文本文件、shell腳本(shell的概念在第2章會(huì)進(jìn)行講解)、二進(jìn)制的可執(zhí)行程序和各種類(lèi)型的數(shù)據(jù)。
(2)目錄文件。
在Linux中,目錄也是文件,它們包含文件名和子目錄名以及指向那些文件和子目錄的指針。目錄文件是Linux中存儲(chǔ)文件名的惟一地方,當(dāng)把文件和目錄相對(duì)應(yīng)起來(lái)時(shí),也就是用指針將其鏈接起來(lái)之后,就構(gòu)成了目錄文件。因此,在對(duì)目錄文件進(jìn)行操作時(shí),一般不涉及對(duì)文件內(nèi)容的操作,而只是對(duì)目錄名和文件名的對(duì)應(yīng)關(guān)系進(jìn)行操作。
另外,Linux系統(tǒng)中的每個(gè)文件都被賦予惟一的數(shù)值,而這個(gè)數(shù)值被稱(chēng)作索引節(jié)點(diǎn)。索引節(jié)點(diǎn)存儲(chǔ)在一個(gè)稱(chēng)作索引節(jié)點(diǎn)表(InodeTable)中,該表在磁盤(pán)格式化時(shí)被分配。每個(gè)實(shí)際的磁盤(pán)或分區(qū)都有自己的索引節(jié)點(diǎn)表。一個(gè)索引節(jié)點(diǎn)包含文件的所有信息,包括磁盤(pán)上數(shù)據(jù)的地址和文件類(lèi)型。
Linux文件系統(tǒng)把索引節(jié)點(diǎn)號(hào)1賦予根目錄,這也就是Linux的根目錄文件在磁盤(pán)上的地址。根目錄文件包括文件名、目錄名及它們各自的索引節(jié)點(diǎn)號(hào)的列表,Linux可以通過(guò)查找從根目錄開(kāi)始的一個(gè)目錄鏈來(lái)找到系統(tǒng)中的任何文件。
Linux通過(guò)目錄鏈接來(lái)實(shí)現(xiàn)對(duì)整個(gè)文件系統(tǒng)的操作。比如,把文件從一個(gè)磁盤(pán)目錄移到另一實(shí)際磁盤(pán)的目錄時(shí)(實(shí)際上是通過(guò)讀取索引節(jié)點(diǎn)表來(lái)檢測(cè)這種動(dòng)作的),這時(shí),原先文件的磁盤(pán)索引號(hào)被刪除,在新磁盤(pán)上建立相應(yīng)的索引節(jié)點(diǎn)。它們之間的相應(yīng)關(guān)系如圖1.5所示。
圖1.5目錄文件與索引節(jié)點(diǎn)關(guān)系
(3)鏈接文件。
鏈接文件有些類(lèi)似于Windows中的“快捷方式”,但是它的功能更為強(qiáng)大。它可以實(shí)現(xiàn)對(duì)不同的目錄、文件系統(tǒng)甚至是不同的機(jī)器上的文件直接訪問(wèn),并且不必重新占用磁盤(pán)空間。
(4)設(shè)備文件。
Linux把設(shè)備都當(dāng)作文件一樣來(lái)進(jìn)行操作,這樣就大大方便了用戶的使用(在后面的Linux編程中可以更為明顯地看出)。在Linux下與設(shè)備相關(guān)的文件一般都在/dev目錄下,它包括兩種,一種是塊設(shè)備文件,另一種是字符設(shè)備文件。
n 塊設(shè)備文件是指數(shù)據(jù)的讀寫(xiě),它們是以塊(如由柱面和扇區(qū)編址的塊)為單位的設(shè)備,最簡(jiǎn)單的如硬盤(pán)(/dev/hda1)等。
n 字符設(shè)備主要是指串行端口的接口設(shè)備。
2.文件屬性Linux中的文件屬性如圖1.6如示。
圖1.6Linux文件屬性表示方法
首先,Linux中文件的擁有者可以把文件的訪問(wèn)屬性設(shè)成3種不同的訪問(wèn)權(quán)限:可讀(r)、可寫(xiě)(w)和可執(zhí)行(x)。文件又有3個(gè)不同的用戶級(jí)別:文件擁有者(u)、所屬的用戶組(g)和系統(tǒng)里的其他用戶(o)。
第一個(gè)字符顯示文件的類(lèi)型。
n “-”表示普通文件。
n “d”表示目錄文件。
n “l”表示鏈接文件。
n “c”表示字符設(shè)備。
n “b”表示塊設(shè)備。
n “p”表示命名管道,比如FIFO文件(FirstInFirstOut,先進(jìn)先出)。
n “f”表示堆棧文件,比如LIFO文件(LastInFirstOut,后進(jìn)先出)。
n “s”表示套接字。
第一個(gè)字符之后有三個(gè)三位字符組:
n 第一個(gè)三位字符組表示文件擁有者(u)對(duì)該文件的權(quán)限。
n 第二個(gè)三位字符組表示文件用戶組(g)對(duì)該文件的權(quán)限。
n 第三個(gè)三位字符組表示系統(tǒng)其他用戶(o)對(duì)該文件的權(quán)限。
n 若該用戶組對(duì)此沒(méi)有權(quán)限,一般顯示“-”字符。
小知識(shí)
目錄權(quán)限和文件權(quán)限有一定的區(qū)別。對(duì)于目錄而言,r代表允許列出該目錄下的文件和子目錄,w代表允許生成和刪除該目錄下的文件,x代表允許訪問(wèn)該目錄。
1.3.2文件系統(tǒng)類(lèi)型介紹1.ext2和ext3ext3是現(xiàn)在Linux(包括RedHat,Mandrake下)常見(jiàn)的默認(rèn)的文件系統(tǒng),它是ext2的升級(jí)版本。正如RedHat公司的首席核心開(kāi)發(fā)人員MichaelK.Johnson所說(shuō),從ext2轉(zhuǎn)換到ext3主要有以下4個(gè)理由:可用性、數(shù)據(jù)完整性、速度以及易于轉(zhuǎn)化。ext3中采用了日志式的管理機(jī)制,它使文件系統(tǒng)具有很強(qiáng)的快速恢復(fù)能力,并且由于從ext2轉(zhuǎn)換到ext3無(wú)須進(jìn)行格式化,因此,更加推進(jìn)了ext3文件系統(tǒng)的推廣。
2.swap文件系統(tǒng)該文件系統(tǒng)是Linux中作為交換分區(qū)使用的。在安裝Linux的時(shí)候,交換分區(qū)是必須建立的,并且它所采用的文件系統(tǒng)類(lèi)型必須是swap而沒(méi)有其他選擇。
3.vfat文件系統(tǒng)Linux中把DOS中采用的FAT文件系統(tǒng)(包括FAT12、FAT16和FAT32)都稱(chēng)為vfat文件系統(tǒng)。
4.NFS文件系統(tǒng)NFS文件系統(tǒng)是指網(wǎng)絡(luò)文件系統(tǒng),這種文件系統(tǒng)也是Linux的獨(dú)到之處。它可以很方便地在局域網(wǎng)內(nèi)實(shí)現(xiàn)文件共享,并且使多臺(tái)主機(jī)共享同一主機(jī)上的文件系統(tǒng)。而且NFS文件系統(tǒng)訪問(wèn)速度快、穩(wěn)定性高,已經(jīng)得到了廣泛的應(yīng)用,尤其在嵌入式領(lǐng)域,使用NFS文件系統(tǒng)可以很方便地實(shí)現(xiàn)文件本地修改,而免去了一次次讀寫(xiě)Flash的憂慮。
5.ISO9660文件系統(tǒng)這是光盤(pán)所使用的文件系統(tǒng),在Linux中對(duì)光盤(pán)已有了很好的支持,它不僅可以提供對(duì)光盤(pán)的讀寫(xiě),還可以實(shí)現(xiàn)對(duì)光盤(pán)的刻錄。
1.3.3Linux目錄結(jié)構(gòu)下面以RedHatEnterprise4AS為例,詳細(xì)列出了Linux文件系統(tǒng)中各主要目錄的存放內(nèi)容,如表1.1所示。
表1.1 Linux文件系統(tǒng)目錄結(jié)構(gòu)
目錄
目錄內(nèi)容
/bin
bin就是二進(jìn)制(binary)的英文縮寫(xiě)。在這里存放Linux常用操作命令的執(zhí)行文件,如mv、ls、mkdir等。有時(shí),這個(gè)目錄的內(nèi)容和/usr/bin里面的內(nèi)容一樣,它們都是放置一般用戶使用的執(zhí)行文件
/boot
這個(gè)目錄下存放操作系統(tǒng)啟動(dòng)時(shí)所要用到的程序。如啟動(dòng)grub就會(huì)用到其下的/boot/grub子目錄
/dev
該目錄中包含了所有Linux系統(tǒng)中使用的外部設(shè)備。要注意的是,這里并不是存放外部設(shè)備的驅(qū)動(dòng)程序,它實(shí)際上是一個(gè)訪問(wèn)這些外部設(shè)備的端口。由于在Linux中,所有的設(shè)備被當(dāng)作文件進(jìn)行操作,比如:/dev/cdrom代表光驅(qū),用戶可以非常方便地像訪問(wèn)文件、目錄一樣對(duì)其進(jìn)行訪問(wèn)
/etc
該目錄下存放了系統(tǒng)管理時(shí)要用到的各種配置文件和子目錄。如網(wǎng)絡(luò)配置文件、文件系統(tǒng)、x系統(tǒng)配置文件、設(shè)備配置信息、設(shè)置用戶信息等都在這個(gè)目錄下。系統(tǒng)在啟動(dòng)過(guò)程中需要讀取其參數(shù)并進(jìn)行相應(yīng)的配置
/etc/rc.d
該目錄主要存放Linux啟動(dòng)和關(guān)閉時(shí)要用到的腳本文件,在后面的啟動(dòng)詳解中還會(huì)進(jìn)一步地講解
/etc/rc.d/init
該目錄存放所有Linux服務(wù)默認(rèn)的啟動(dòng)腳本(在新版本的Linux中還用到/etc/xinetd.d目錄下的內(nèi)容)
/home
該目錄是Linux系統(tǒng)中默認(rèn)的用戶工作根目錄。如前面在1.3.1節(jié)中所述,執(zhí)行adduser命令后系統(tǒng)會(huì)在/home目錄下為對(duì)應(yīng)賬號(hào)建立一個(gè)同名的主目錄
/lib
該目錄是用來(lái)存放系統(tǒng)動(dòng)態(tài)鏈接共享庫(kù)的。幾乎所有的應(yīng)用程序都會(huì)用到這個(gè)目錄下的共享庫(kù)。因此,千萬(wàn)不要輕易對(duì)這個(gè)目錄進(jìn)行操作
/lost+found
該目錄在大多數(shù)情況下都是空的。只有當(dāng)系統(tǒng)產(chǎn)生異常時(shí),會(huì)將一些遺失的片段放在此目錄下
/media
該目錄下是光驅(qū)和軟驅(qū)的掛載點(diǎn),F(xiàn)edoraCore4已經(jīng)可以自動(dòng)掛載光驅(qū)和軟驅(qū)
/misc
該目錄下存放從DOS下進(jìn)行安裝的實(shí)用工具,一般為空
/mnt
該目錄是軟驅(qū)、光驅(qū)、硬盤(pán)的掛載點(diǎn),也可以臨時(shí)將別的文件系統(tǒng)掛載到此目錄下
/proc
該目錄是用于放置系統(tǒng)核心與執(zhí)行程序所需的一些信息。而這些信息是在內(nèi)存中由系統(tǒng)產(chǎn)生的,故不占用硬盤(pán)空間
/root
該目錄是超級(jí)用戶登錄時(shí)的主目錄
/sbin
該目錄用來(lái)存放系統(tǒng)管理員的常用的系統(tǒng)管理程序
/tmp
該目錄用來(lái)存放不同程序執(zhí)行時(shí)產(chǎn)生的臨時(shí)文件。一般Linux安裝軟件的默認(rèn)安裝路徑就是這里
/usr
這是一個(gè)非常重要的目錄,用戶的很多應(yīng)用程序和文件都存放在這個(gè)目錄下,類(lèi)似于Windows下的ProgramFiles的目錄
/usr/bin
系統(tǒng)用戶使用的應(yīng)用程序
/usr/sbin
超級(jí)用戶使用的比較高級(jí)的管理程序和系統(tǒng)守護(hù)程序
/usr/src
內(nèi)核源代碼默認(rèn)的放置目錄
/srv
該目錄存放一些服務(wù)啟動(dòng)之后需要提取的數(shù)據(jù)
/sys
這是Linux2.6內(nèi)核的一個(gè)很大的變化。該目錄下安裝了2.6內(nèi)核中新出現(xiàn)的一個(gè)文件系統(tǒng)sysfs。sysfs文件系統(tǒng)集成了下面3種文件系統(tǒng)的信息:針對(duì)進(jìn)程信息的proc文件系統(tǒng)、針對(duì)設(shè)備的devfs文件系統(tǒng)以及針對(duì)偽終端的devpts文件系統(tǒng)。該文件系統(tǒng)是內(nèi)核設(shè)備樹(shù)的一個(gè)直觀反映。當(dāng)一個(gè)內(nèi)核對(duì)象被創(chuàng)建的時(shí)候,對(duì)應(yīng)的文件和目錄也在內(nèi)核對(duì)象子系統(tǒng)中被創(chuàng)建
/var
這也是一個(gè)非常重要的目錄,很多服務(wù)的日志信息都存放在這里