官术网_书友最值得收藏!

1.5 Linux文件系統入門

Linux文件系統是Linux系統的核心模塊。通過使用文件系統,用戶可以很好地管理各項文件及目錄資源。本節將對Linux常用的文件系統、文件的基本概念和目錄的基本概念等進行系統、全面的介紹。

1.5.1 Linux常用文件系統介紹

隨著Linux的不斷發展,其所能支持的文件格式系統也在迅速擴充。特別是Linux2.4內核正式推出后,出現了大量新的文件系統,其中包括日志文件系統Ext3、ReiserFS、XFS、JFS和其他文件系統。Linux系統核心可以支持10多種文件系統類型:JFS、ReiserFS、Ext、Ext2、Ext3、ISO9660、XFS、Minx、MSDOS、UMSDOS、VFAT、NTFS、HPFS、NFS、SMB、SysV、PROC等。其中,較為普遍的有如下幾種:

● Minix是Linux支持的第一個文件系統,對用戶有很多限制,性能低下,有些沒有時間標記,文件名最長為l4個字符。Minix文件系統最大的缺點是只能使用64MB的硬盤分區,所以目前已經沒有人使用該文件系統了。

● Xia是Minix文件系統修正后的版本,在一定程度上解決了文件名和文件系統大小的局限;但沒有新的特色,目前很少有人使用。

● ISO9660標準CDROM文件系統,通用的Rock Ridge增強系統,允許長文件名。

● NFS(Network File System)是Sun公司推出的網絡文件系統,允許在多臺計算機之間共享同一文件系統,易于從所有這些計算機上存取文件。

● SysV是System V/Coherent在Linux平臺上的文件系統。

● 擴展文件系統(Ext File System)是隨著Linux不斷地成熟而引入的,它包含了幾個重要的擴展,但提供的性能不令人滿意。1994年人們引入了第二擴展文件系統(second Extended Filesystem,Ext2)。

● Ext3(third Extended Filesystem)是由開放資源社區開發的日志文件系統,被設計成Ext2的升級版本,盡可能地方便用戶從Ext2向Ext3遷移。Ext3在Ext2的基礎上加入了記錄元數據的日志功能,努力保持向前和向后的兼容性。這個文件系統也許稱為Ext2的下一個版本更為合適些。Ext3還支持異步的日志,這意味著其性能可能比Ext2還好。

除了上面這些Linux支持的文件系統外,Linux還可以支持基于Windows和Netware的文件系統,例如UMSDOS、MSDOS、VFAT、HPFS、SMB和NCPFS等。兼容這些文件系統對Linux用戶來說是很重要的,畢竟在桌面環境下Windows文件系統還是很流行的,而Netware網絡也有許多用戶,Linux用戶也要共享這些文件系統的數據。

● UMSDOS是一種Linux下的MSDOS文件系統驅動,支持長文件名、所有者、允許權限、連接和設備文件。允許一個普通的MSDOS文件系統用于Linux,而且無須為其建立單獨的分區。

● MSDOS是在DOS、Windows和某些OS/2操作系統上使用的一種文件系統,其名稱采用“8+3”的形式,即8個字符的文件名加上3個字符的擴展名。

● VFAT是在Windows 9X和Windows 2000下使用的一種DOS文件系統,其在DOS文件系統的基礎上增加了對長文件名的支持。

● HPFT——高性能文件系統(High Performance File System,HPFS)是微軟LAN Manager中的文件系統,同時也是IBM的LAN Server和OS/2的文件系統。HPFT能訪問較大的硬盤驅動器,提供了更多的組織特性,并改善了文件系統的安全特性。

● SMB是一種支持Windows for Workgroups、Windows NT和Lan Manager的基于SMB協議的網絡操作系統。

● NCPFS是一種Novell NetWare使用NCP協議的網絡操作系統。

● NTFS是由Windows 2000/XP/2003操作系統支持,一個特別為網絡和磁盤配額、文件加密等安全特性設計的磁盤格式。

1.5.2 Linux文件介紹

本節詳細介紹Linux文件系統中文件的定義、文件名的規定以及文件的類型。

1.文件與文件名

在多數操作系統中都有文件的概念。在Linux中文件是存儲信息的基本結構,是被命名(稱為文件名)的存儲在某種介質(如磁盤、光盤和磁帶等)上的一組信息的集合。Linux文件均為無結構的字符流形式。文件名是文件的標識,由字母、數字、下畫線和圓點組成的字符串構成。用戶應該盡量選擇有意義的文件名,以方便識別和記憶。

為了便于管理和識別,用戶可以把擴展名作為文件名的一部分。圓點用于區分文件名和擴展名。擴展名對文件分類是十分有用的。用戶可能對某些大眾已接納的標準擴展名比較熟悉。例如,用C++語言編寫的源代碼文件總是具有cpp的擴展名。用戶可以根據自己的需要,隨意加入自己的文件擴展名。以下例子給出一些有效的Linux文件名:

    Test                 //不帶擴展名的文件
    Readme.txt            //文本文件
    example.pl            //perl腳本文件
    Auto.bat              //批處理文件

2.文件的類型

Linux系統中有三種基本的文件類型:普通文件、目錄文件和設備文件。

(1)普通文件:是用戶最經常使用和熟悉的文件,它又分為文本文件和二進制文件兩種。

● 文本文件:這類文件以文本的ASCII碼形式存儲在計算機中,是以“行”為基本結構的一種信息組織和存儲方式。

● 二進制文件:這類文件以文本的二進制形式存儲在計算機中。用戶一般不能直接讀懂它們,只有通過相應的軟件才能將其顯示出來。二進制文件一般是可執行程序、圖形、圖像、聲音等。

(2)目錄文件:主要目的是用于管理和組織系統中的大量文件,其存儲一組相關文件的位置、大小等與文件有關的信息。目錄文件一般簡稱為目錄。

(3)設備文件:Linux系統把每一個I/O設備都看成一個文件(這點與Windows系列操作系統有很大區別),與普通文件一樣處理,這樣可以使文件與設備的操作盡可能統一。從用戶的角度來看,對I/O設備的使用和一般文件的使用一樣,不必了解I/O設備的細節。設備文件可以細分為塊設備文件和字符設備文件。前者的存取是以字符塊為單位的,后者則以單個字符為單位。

1.5.3 Linux目錄介紹

本節詳細介紹Linux系統中樹型目錄結構、工作目錄、用戶主目錄等重要概念。

1.樹型目錄結構

在計算機系統中存有大量的文件,如何有效地組織與管理它們,并為用戶提供一個使用方便的接口是文件系統的主要任務。Linux系統以文件目錄的方式來組織和管理系統中的所有文件。所謂文件目錄就是將所有文件的說明信息采用樹型結構組織起來。整個文件系統有一個“根”(root),然后在根上分“杈”(directory),任何一個分杈上都可以再分杈,杈上也可以長出“葉子”。“根”和“杈”在Linux中被稱為是“目錄”或“文件夾”。而“葉子”則是文件。實踐證明,此種結構的文件系統效率高,現代操作系統基本上都采用這種結構方式。

如前所述,目錄也是一種類型的文件。Linux系統通過目錄將系統中所有的文件分級和分層地組織在一起,形成了Linux文件系統的樹型層次結構。以根目錄為起點,所有其他的目錄都由根目錄派生而來,用戶可以瀏覽整個系統,可以進入任何一個已授權進入的目錄,從而訪問其中的文件。

實際上,各個目錄結點之下都會有一些文件和子目錄。并且,系統在建立每一個目錄時,都會自動為它設定兩個目錄文件,一個是“.”,代表該目錄自己;另一個則是“..”,代表該目錄的父目錄。

Linux目錄提供了管理文件的一個方便途徑。每個目錄都包含文件。用戶可以為自己的文件創建自己的目錄,也可以把一個目錄下的文件移動或復制到另一個目錄下,而且能移動整個目錄,與系統中的其他用戶共享目錄和文件。也就是說,用戶能夠方便地從一個目錄切換到另一個目錄,而且可以設置目錄和文件的管理權限,以便允許或拒絕其他人對其進行訪問。同時,文件目錄結構的相互關聯性使分享數據變得十分容易,幾個用戶可以訪問同一個文件,因此允許用戶設置文件的共享程度。

2.工作目錄與用戶主目錄和路徑

從邏輯上講,用戶登錄Linux系統之后,每時每刻都處在某個目錄之中,此目錄被稱作工作目錄或當前目錄(Working Directory)。工作目錄是可以隨時改變的。用戶初始登錄到系統中時,其主目錄(Home Directory)就成為其工作目錄。工作目錄用“.”表示,其父目錄用“..”表示。

用戶主目錄是系統管理員增加用戶時建立起來的(以后也可以根據實際情況改變),每個用戶都有自己的主目錄,不同用戶的主目錄一般互不相同。用戶剛登錄到系統中時,其工作目錄便是該用戶的主目錄,通常與用戶的登錄名相同。用戶可以通過一個“~”符來引用自己的主目錄。如下所示的兩條路徑就是完全一樣的:

    //使用顯示文件內容的cat命令對路徑為/home/test/tool/software的文件進行顯示
    /home/test#cat ~/tool/software
    /home/test#cat /home/test/tool/software

3.路徑

對文件進行訪問時,要用到“路徑”(Path)的概念。顧名思義,路徑是指從樹型目錄中的某個目錄層次到某個文件的一條道路。此路徑的主要構成是目錄名稱,中間用“/”隔開。任一文件在文件系統中的位置都是由相應的路徑決定的。

用戶在對文件進行訪問時,要給出文件所在的路徑。路徑又分相對路徑和絕對路徑兩種。絕對路徑是指從“根”開始的路徑,也稱為完全路徑;相對路徑是從用戶工作目錄開始的路徑。

用戶要訪問一個文件時,可以通過路徑名來引用。并且為操作方便起見,完全可以根據要訪問的文件與用戶工作目錄的相對位置來引用它,而不需要列出這個文件完整的路徑名。例如,用戶Patterson有一個名為class的目錄,該目錄中有兩個文件:time.conf和test.java。若用戶Patterson想顯示其class目錄中的名為time.conf的文件,可以使用下列命令:

    /home/Patterson#cat /home/Patterson/class/time.conf

用戶也可以根據文件time.conf與當前工作目錄的相對位置來引用該文件。這時命令為:

    /home/Patterson#cat class/time.conf

1.5.4 Linux目錄結構

Linux系統的目錄層次結構比較復雜,下面將對其進行介紹。

● /:根目錄。在Windows,DOS或者其他類似的操作系統里面,每個分區都會有一個相應的根目錄。但是Linux和其他UNIX系統則把所有的文件都放在一個目錄樹里面,/就是唯一的根目錄。一般來講,根目錄下面很少保存什么文件,或者只有一個內核映像在這里。

● /boot:很多Linux系統把內核映像和其他一些和啟動有關的文件都放在這里。

● /tmp:一般只有啟動時產生的臨時文件才會放在這個地方。我們自己的臨時文件都放在/var/tmp。

● /mnt:這個目錄下面放著一些用來安裝其他設備的子目錄,比如說/mnt/cdrom或者/mnt/floppy。在有些Linux中這個目錄被/mount代替。

● /lib:啟動的時候所要用到的庫文件都放在這個目錄下。那些非啟動用的庫文件都會放在/usr/lib下。內核模塊是放在/lib/modules/(內核版本)下的。

● /proc:這個目錄在磁盤上其實是不存在的。里面的文件都是關于當前系統的狀態,包括正在運行的進程、硬件狀態、內存使用的多少等。

● /dev:這個目錄下保存著所有的設備文件。里面有一些是由Linux內核創建的用來控制硬件設備的特殊文件。

● /var:這里有一些被系統改變過的數據。比如說/var/tmp,就是用來儲存臨時文件的。還有很多其他的進程和模塊把它們的記錄文件也放在這個地方,包括如下一些重要的子目錄:

? /var/log:這里放著絕大部分的記錄文件。隨著時間的增長,這個目錄會變得很龐大,所以要定期清理;

? /var/run:包括了各種運行時的信息;

? /var/lib:包括了一些系統運行時需要的文件;

? /var/spool:郵件,新聞,打印序列的所在地。

● /root:root用戶的主目錄。

● /home:一般用戶的主目錄都會放在這個目錄下。在Linux下,可以通過#cd ~來進入自己的主目錄。

● /etc:這里保存著絕大部分的系統配置文件。相對來講,單個用戶的系統配置文件會保存在這個用戶自己的主目錄里面。下面列舉其中一些重要的子目錄:

? /etc/X11:這里放著X窗口系統(Linux中的圖形用戶界面系統)所需要的配置文件。XF86Config就是把配置儲存到這個地方的。/etc/X11/fonts里面放著一些服務器需要的字體,還存放一些窗口管理器存放的配置文件;

? /etc/init.d:這個目錄保存著啟動描述文件,包括各種模塊和服務的加載描述。所以如果不清楚的話,千萬不要隨便刪除其中的文件,這里存放的文件都是系統自動進行配置的,不需要用戶配置;

? /etc/rcS.d:這里放著一些連接到/etc/init.d的文件,根據runlevel的不同而執行相應的描述。這里的文件名都是由S來開頭的,然后是一個兩位的數字——表示各種服務啟動的順序。比如,S24foo就是在S42bar前面執行的。接著就是相應的連接到/etc/init.d下面的文件名字了;

? /etc/rc0.d - /etc/rc6.d:這里面也是一些連接文件,和/etc/rcS.d差不多。不同的是,這些只會在指定的runlevel下運行相應的描述。0表示關機,6表示重啟。所有以K開頭的文件表示關閉,所有以S開頭的文件表示重啟。目前來講,文件的命名方式和/etc/rcS.d是一樣的。

● /bin,/sbin:這里分別放著啟動時所需要的普通程序和系統程序。很多程序在啟動以后也很有用,它們放在這個目錄下是因為它們經常要被其他程序調用。

● /usr:這是一個很復雜、龐大的目錄。除了上述目錄之外,幾乎所有的文件都存放在這下面。下面列舉其中一些重要的子目錄:

? /usr/X11R6,/usr/X11,/usr/Xfree86:這里保存著X窗口系統所需要的文件,它的目錄結構和/usr是一樣的;

? /usr/bin:二進制可執行文件存放的目錄,這里放著絕大部分的應用程序;

? /usr/sbin:這里放著絕大部分的系統程序;

? /usr/games:游戲程序和相應的數據會放在這里;

? /usr/include:這個目錄保存著C和C++的頭文件;

? /usr/lib:啟動時用不到的庫文件都會放在這里;

? /usr/info:這里保存著GNU Info程序所需要的數據;

? /usr/man:這里保存著man程序所需要的數據;

? /usr/src:這里保存著源代碼文件;

? /usr/doc:這里保存著各種文檔文件。這些文件可以幫助你了解Linux,解決問題和提供一些技巧;

? /usr/local:這里保存著本地計算機所需要的文件。在用戶進行遠程訪問的時候特別有意義。這個目錄在有些Linux系統下就是一個單獨的分區,存放一些這臺機子所屬的那個用戶的文件。里面的結構和/usr是一樣的;

? /usr/shared,/usr/share這里保存著各種共享文件。

主站蜘蛛池模板: 延长县| 成武县| 河池市| 谷城县| 包头市| 商洛市| 巴林左旗| 宝兴县| 青阳县| 邵武市| 探索| 光山县| 大厂| 栾川县| 通渭县| 双牌县| 应城市| 黄平县| 娱乐| 永嘉县| 天门市| 凭祥市| 祁连县| 临沭县| 沾益县| 郧西县| 威远县| 合作市| 包头市| 丹棱县| 巴彦县| 襄汾县| 随州市| 夹江县| 如皋市| 定陶县| 凤冈县| 日喀则市| 开封市| 五常市| 台山市|