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