Linux文件系統的目錄結構


Linux下的文件系統為樹形結構,入口為/ 樹形結構下的文件目錄: 無論哪個版本的Linux系統,都有這些目錄,這些目錄應該是標准的。各個Linux發行版本會存在一些小小的差異,但總體來說,還是大體差不多。

1. / 文件系統的入口,最高一級目錄;

2. /bin 基礎系統所需要的命令位於此目錄,是最小系統所需要的命令,如:ls, cp, mkdir等。
這個目錄中的文件都是可執行的,一般的用戶都可以使用。

3. /boot 包含Linux內核及系統引導程序所需要的文件,比如 vmlinuz initrd.img 文件都位於這個目錄中。在一般情況下,GRUBLILO系統引導管理器也位於這個目錄;

4. /dev 設備文件存儲目錄,比如聲卡、磁盤... ... 這是一個非常有趣的目錄,是Linux文件系統的一個閃亮的特性 所有對象都是文件或目錄。仔細觀察這個目錄你會發現hda1, hda2它們代表系統主硬盤的不同分區。
/dev/cdrom/dev/fd0代表你的CDROM驅動器和floppy驅動器。看上去可能有些奇怪,但比較文件和硬件的特性這卻是十分合理的。它們都可以讀出和寫入。例如/dev/dsp,這個文件代表你的揚聲器。那么寫入這個文件的數據都回傳送到喇叭。試一試 'cat /etc/lilo.conf > /dev/dsp' 你會聽到一些聲音。這是你的lilo.conf 文件的聲音!同樣,向 /dev/ttyS0 ( COM 1 ) 讀出或寫入數據你可以和接到上面的設備進行通訊。

5. /etc 存放系統程序或者一般工具的配置文件。
如安裝了
apache2之后,配置文件在/etc/apache2/目錄下。
/etc/init.d 這個目錄是用來存放系統或服務器以System V模式啟動的腳本,這在以System V模式啟動或初始化的系統中常見。
apache2/etc/init.d apache2 start|stop|restart MySQL/etc/init.d mysql start|stop|restart 6. /home 普通用戶默認存放目錄 Linux 是多用戶環境,所以每一個用戶都有一個只有自己可以訪問的目錄(當然管理員也可以訪問)。它們以 /home/username 的方式存在。這個目錄也保存一些應用對於這個用戶的配置,比如 IRC, X 等。

7. /lib 庫文件存放目錄這里包含了系統程序所需要的所有共享庫文件,類似於 Windows 的共享庫 DLL 文件。

8. /lost+found 在ext2ext3文件系統中,當系統意外崩潰或機器意外關機,而產生一些文件碎片放在這里。當系統啟動的過程中fsck工具會檢查這里,並修復已經損壞的文件系統。 有時系統發生問題,有很多的文件被移到這個目錄中,可能會用手工的方式來修復,或移到文件到原來的位置上。
Linux 應該正確的關機。但有時你的系統也可能崩潰掉或突然斷電使系統意外關機。那么啟動的時候 fsck 將會進行長時間的文件系統檢查。Fsck 會檢測並試圖恢復所發現的不正確的文件。被恢復的文件會放置在這個目錄中。所恢復的文件也許並不完整或並不合理,但畢竟提供了一些恢復數據的機會。


9. /media 即插即用型存儲設備的掛載點自動在這個目錄下創建,比如USB盤系統自動掛載后,會在這個目錄下產生一個目錄 ;CDROM/DVD自動掛載后,也會在這個目錄中創建一個目錄,類似cdrom 的目錄。這個只有在最新的發行套件上才有. 10. /mnt /mnt 這個目錄一般是用於存放掛載儲存設備的掛載目錄的,比如有cdrom 等目錄。有時我們可以把讓系統開機自動掛載文件系統,把掛載點放在這里也是可以的。比如光驅可以掛載到/mnt/cdrom 

這是一個普通的加載目錄,在這里你可以加載你的文件系統或設備。
加載是使一個文件系統對於系統可用的過程。
在加載后你的文件可以在加載目錄下訪問。
這個目錄通常包含加載目錄或用於加載軟驅和光驅的子目錄。
如果需要,你也可以在這里建立其它的加載目錄。
對於加載目錄的位置並沒有強制性的要求,你可以在系統的任意位置建立加載目錄。
建立 
/mnt 只是為了使系統更工整的慣例。 

11. /opt 表示的是可選擇的意思,有些軟件包也會被安裝在這里,也就是自定義軟件包,比如在Fedora Core 5.0中,OpenOffice就是安裝在這里。有些我們自己編譯的軟件包,就可以安裝在這個目錄中;通過源碼包安裝的軟件,可以通過 ./configure --prefix=/opt/,將軟件安裝到opt目錄。

這個目錄包含所有默認系統安裝之外的軟件和添加的包。

12. /proc 操作系統運行時,進程(正在運行中的程序)信息及內核信息(比如cpu、硬盤分區、內存信息等)存放在這里。/proc目錄是偽裝的文件系統proc的掛載目錄,proc並不是真正的文件系統。
這是系統中極為特殊的一個目錄,實際上任何分區上都不存在這個目錄。它實際是個實時的、駐留在內存中的文件系統。


13. /root Linux超級權限用戶root的家目錄;

14. /sbin 大多是涉及系統管理的命令的存放,是超級權限用戶root的可執行命令存放地,普通用戶無權限執行這個目錄下的命令;
這個目錄和
/usr/sbin; /usr/X11R6/sbin/usr/local/sbin 目錄是相似的; 我們記住就行了,凡是目錄sbin中包含的都是root權限才能執行的。

15. /tmp 臨時文件目錄,有時用戶運行程序的時候,會產生臨時文件。 /tmp就用來存放臨時文件的。/var/tmp目錄和這個目錄相似。
許多程序在這里建立
lock文件和存儲臨時數據。有些系統會在啟動或關機時清空此目錄。

16. /usr 這個是系統存放程序的目錄,比如命令、幫助文件等。
這個目錄下有很多的文件和目錄。
當我們安裝一個Linux發行版官方提供的軟件包時,大多安裝在這里。
如果有涉及服務器配置文件的,會把配置文件安裝在
/etc目錄中。

/usr目錄下包括:
涉及字體目錄
/usr/share/fonts 
幫助目錄 
/usr/share/man/usr/share/doc
普通用戶可執行文件目錄
/usr/bin /usr/local/bin /usr/X11R6/bin 
超級權限用戶
root的可執行命令存放目錄,比如 /usr/sbin /usr/X11R6/sbin/usr/local/sbin 等;
還有程序的頭文件存放目錄
/usr/include

/usr/bin 這個目錄是可執行程序的目錄,普通用戶就有權限執行; 當我們從系統自帶的軟件包安裝一個程序時,他的可執行文件大多會放在這個目錄。
/usr/sbin 這個目錄也是可執行程序的目錄,但大多存放涉及系統管理的命令。只有root權限才能執行;相似目錄是/sbin /usr/local/sbin/usr/X11R6/sbin等; 
/usr/local 這個目錄一般是用來存放用戶自編譯安裝軟件的存放目錄;一般是通過源碼包安裝的軟件,如果沒有特別指定安裝目錄的話,一般是安裝在這個目錄中。這個目錄下面有子目錄。
/usr/lib /lib 目錄相似,是庫文件的存儲目錄;
/usr/share 系統共用的東西存放地,比如 /usr/share/fonts 是字體目錄,是用戶都共用的吧。
/usr/share/doc/usr/share/man幫助文件,也是共用的吧; 
/usr/src 是內核源碼存放的目錄,比如下面有內核源碼目錄,比如 linux linux-2.xxx.xx 目錄等。有的系統也會把源碼軟件包安裝在這里。比如Fedora/Redhat,當我們安裝file.src.rpm的時候,這些軟件包會安裝在 /usr/src/redhat相應的目錄中。請參考: 《file.src.rpm 使用方法的簡單介紹》 。另外Fedhat 4.0 5.0,他的內核源碼包的目錄位於/usr/src/kernels目錄下的某個目錄中(只有安裝后才會生成相應目錄);

17. /var 這個目錄的內容是經常變動的,看名字就知道,我們可以理解為vary的縮寫,/var下有/var/log這是用來存放系統日志的目錄。
/var/www目錄是定義Apache服務器站點存放目錄;/var/lib 用來存放一些庫文件,比如MySQL的,以及MySQL數據庫的的存放地;
/var/log 系統日志存放,分析日志要看這個目錄的東西;
/var/spool 打印機、郵件、代理服務器等假脫機目錄;


WindowsLinux文件系統的區別 Linux文件系統與Windows文件系統有很大的差別。
Linux文件系統作為開端,只有一個單獨的頂級目錄結構。所有一切都從 '開始,用 '/' 代表並且延伸到子目錄。DOS/Windows有不同的分區,同時目錄都存於分區上。linux則通過 '加載的方式把所有分區都放置在 '下制定的目錄里。
一句話總結:Windows下,目錄結構屬於分區;Linux下,分區 '加載於目錄結構。 Windows啟動時檢測不同的分區並被賦予一個分區字母。在Linux下除非你加載一個分區或設備,否則系統不會知道那個分區的存在。這看上去也許不是訪問分區或設備的最方便的方式,但是這種方式提供了偉大的機動性。
這種構建的方式被稱為統一的文件系統,超越了
Windows所使用的方式。舉個使用 /usr 的例子。這個目錄包含了大多數的系統可執行文件。在Linux文件系統下,你可以選擇把它加載為其他分區甚至網絡上的其他計算機。系統不會感知其中的不同,因為它表現出的只是本地目錄結構下眾多的目錄中的一個而已。你是否有妄圖在Windows下移動可執行文件和數據,而得到的是不得不去修改注冊表或干脆藍屏?你可曾奢望過移動 C: 到其他分區上?

存儲設備進行格式化(即建立文件系統)

1。關於文件系統

對存儲設備分區還是不夠的,我們還要對新增分區進行格式化;一個分區只有建立了某種 文件系統后,這個分區才能使用;建立文件系統過程,就是用相應格式化工具格式化分區的過程,這個過程和我們在Windows中格式化某個分區為NTFS分 區類似;沒有什么高深的內容,只是所用的工具不一樣罷了;

Linux操作系統中,幾乎支持目前主流的文件系統,比如NTFS(只讀)、FAT(可讀可寫)、ext2ext3reiserfshfs (MAC 操作系統的文件系統)、swap 交換分區... ... 還有一些咱們不熟悉的操作系統的文件系統等;

Linux中,我們常用的文件系統無非是上面例出的這些;如果您新增了一個硬盤,可能想格 式化成 Linux的文件系統,最佳選擇是 reiserfs ext3;目前ext2已被 ext3取代;我們不推薦用ext2文件系統,ext2的使用風險比較大;速度最快的文件系統,當屬reiserfsreiserfs 還有很多優點,比如更安全;ext3Redhat認為最好的文件系統。

相對來說reiserfs還是比ext3要優秀。

 

 

文件系統概念

1*nix系統中:一切皆文件

2。文件

a. )文件的成分: 無論文件是一個程序、一個文檔、一個數據庫,或者是一個目錄,操作系統都會賦予它如下所示的同樣的結構:
索引節點 又稱I節點,在文件系統結構中,包含有關相應文件的信息的一個記錄,這些信息包括文件權限、文件主、文件大小、存放位置、建立日期等。
數據 文件的實際內容,它可以是空的,也可以非常大,並且有自己的結構。

b.) Linux系統區分文件名的大小寫

以圓點“.”開頭的文件名是隱含文件(dot files),默認方式下使用ls命令並不能把它們在屏幕上顯示出來。同樣,在默認情況下,Shell通配符並不匹配這類文件名。

c.) 文件名通配符

星號(*: 0個或多個任意的字符相匹配

問號(?: 問號只與一個任意的字符匹配,可以使用多個問號

方括號([ ]) : 與問號相似,只與一個字符匹配。它們的區別在於,問號與任意一個字符匹配,而方括號只與括號中列出的字符之一匹配。例如letter [123]只與文件letter1letter2letter3匹配,但不與文件 letter12匹配。可以用短橫線代表一個范圍內的字符,而不用將它們一一列出。例如,letter[1-3]letter[123]的簡寫形式。但 是,要注意范圍內的字符都按升序排列,即[A-Z]是有效的,而[Z-A]是無效的。方括號中可以列出多個范圍,如[A-Za-z]可以和任意大寫或小寫 的字符相匹配。方括號中如果以驚嘆號“!”開始,表示不與驚嘆號后的字符匹配。

 

文件類型

Linux操作系統支持普通文件、目錄文件、特別文件及符號鏈接文件等文件類型。

 

1. 普通文件

 普通文件也稱作常規文件,包含各種長度的字節串。核心對這些數據沒有進行結構化,只是作為有序的字節序列把它提交給應用程序。應用程序自己組織和解釋這些數據,通常把它們歸並為下述類型之一:
    ◆
文本文件,由ASCII字符構成。例如,信件、報告和稱作腳本(Script)的命令文本文件,后者由shell解釋執行。
    ◆
數據文件,由來自應用程序的數字型和文本型數據構成。例如,電子表格、數據庫,以及字處理文檔。
    ◆
可執行的二進制程序,由機器指令和數據構成。例如,上面所說的系統提供的命令。

    使用file命令可以確定指定文件的類型。該命令可以將任意多個文件名當做參數,其一般使用格式是:file 文件名 [文件名...]

2. 目錄

目錄是一類特殊的文件,利用它可以構成文件系統的分層樹型結構。如同普通文件那樣,目錄文件也包含數據;但目錄文件與普通文件的差別是,核心對這些數據加以結構化,它是由成對的“I節點號/文件名”構成的列表。
    ◆I
節點號是檢索I節點表的下標,I節點中存放有文件的狀態信息。
    ◆
文件名是給一個文件分配的文本形式的字符串,用來標識該文件。在一個指定的目錄中,任何兩項都不能有同樣的名字。

    每個目錄的第一項都表示目錄本身,並以“.”作為它的文件名。每個目錄的第二項的名字是“..”,表示該目錄的父目錄。

    應注意:以“.”開頭的文件名表示隱含文件,使用帶-a選項的ls命令可以列出它們。

    當把文件添加到一個目錄中的時候,該目錄的大小會增長,以便容納新文件名。當刪除文件時,目錄的尺寸並不減少,而是核心對該目錄項做上特殊標記,以便下次添加一個文件時重新使用它。ls命令不會列出這些未被使用的項。

Linux系統的目錄結構

Linux文件系統采用帶鏈接的樹形目錄結構,即只有一個根目錄(通常用“/”表示),其中含有下級子目錄或文件的信息;子目錄中又可含有更下級的子目錄或者文件的信息。這樣一層一層地延伸下去,構成一棵倒置的樹,如圖1所示。

 
1 Linux樹型目錄結構

在目錄樹中,根節點和中間節點(用圓圈表示)都必須是目錄,而普通文件和特別文件只能作為“葉子”出現。當然,目錄也可以作為葉子。

1)用戶主目錄
    
當注冊進入系統時,主目錄就是當前工作目錄。主目錄往往位於/home目錄之下,並且與注冊名相同,例如,/home/mengqc。通常主目錄包含子目錄、數據文件,以及用於注冊環境的配置文件。

  1. 絕對路徑和相對路徑

什么情況下使用絕對路徑名,什 么情況下使用相對路徑名,取決於哪種方式涉及到的目錄更少。路徑短,不僅鍵盤輸入少,而且節省系統搜索路徑的時間,提高執行效率。例如,當前的工作目錄是 /etc/conf/cf.d,如果需要訪問系統口令文件/etc/passwd,那么使用絕對路徑名是/etc/passwd,使用相對路徑名是.. /../passwd。絕對路徑名/etc/passwd涉及的目錄有2個,而相對路徑名../../passwd涉及的目錄卻是3個。此時,使用絕對路 徑名更有效。

    但是,如果當前工作目錄是/home/mengqc/lib,要訪問在 func目錄之下的file1文件,那么使用絕對路徑名是/home/mengqc/lib/func/file1,使用相對路徑名是 func/file1。絕對路徑名/home/mengqc/lib/func/file1涉及的目錄有5個,而相對路徑名涉及的目錄只有2個。此時,使 用相對路徑名更有效。

    如果不清楚當前工作目錄與其它目錄之間的關系,那么最好使用絕對路徑名。

 

3. 設備文件
    
Linux系統中,所有設備都作為一類特別文件對待,用戶像使用普通文件那樣對設備進行操作,從而實現設備無關性。但是,設備文件除了存放在文件I節點中的信息外,它們不包含任何數據。系統利用它們來標識各個設備驅動器,核心使用它們與硬件設備通信。

    有兩類特別設備文件,它們對應不同類型的設備驅動器:
    ◆
字符設備 最常用的設備類型,允許I/O傳送任意大小的數據,取決於設備本身的容量。使用這種接口的設備包括終端、打印機及鼠標。
    ◆
塊設備 這類設備利用核心緩沖區的自動緩存機制,緩沖區進行I/O傳送總是以1KB為單位。使用這種接口的設備包括硬盤、軟盤和RAM盤。

 

 

Linux系統的文件系統路徑

1。路徑分為絕對路徑和相對路徑。

絕對路徑是從/(也被稱為根目錄)開始的,比如/usr/etc/X11。如果一個路徑是從/開始的,它一定是絕對路徑。

相對路徑是以 . 或 .. 開始的,.表示用戶當前操作所處的位置,而.. 表示上級目錄;在路徑中,.表示用戶當前所處的目錄,而..上級目錄,要把...當做目錄來看。

2[root@localhost ~]# pwd 注:判斷用戶當前所處的位置,也就是說他到底位於哪?

use when you are lost.

3

[root@localhost ~]# cd . 注:我們進入。

[root@localhost ~]# cd .. 注:我們切入/root的上級目錄。

注意,cd之后有個空格。

 

4~ 表示當前用戶自己的家目錄;

~USER 表示用戶名為USER的家目錄

:

cd ~ 回到當前用戶的家目錄;

cd ~USERNAME 回到USERNAME用戶的家目錄;

 

 

 

  文件系統及其安裝

    一個硬盤上可以同時存在多個文件系統,每個文件系統占據硬盤的一個獨立分 區。Linux文件系統可以根據需要隨時裝卸,從而實現文件存儲空間的動態擴充和信息安全。在系統初啟時,往往只有一個文件系統被安裝上,即根文件系統, 其上的文件主要是保證系統正常運行的操作系統的代碼文件,以及若干語言編譯程序、命令解釋程序和相應的命令處理程序等構成的文件,此外,還有大量的用戶文 件空間。根文件系統一旦安裝上,則在整個系統運行過程中是不能卸下的,它是系統的基本部分。

    其它的文件系統(例如,由軟盤構成的文件系統)可以根據需要(如從硬盤向軟盤復制文件),作為子系統動態地安裝到主系統中,如圖5所示。其中,mnt是為安裝子文件系統而特設的安裝節點。

 
5 文件系統安裝

    經過安裝之后,主文件系統與子文件系統就構成一個有完整目錄層次結構的、容量更大的文件系統。這種安裝可以高達幾級。就是說,若干子文件系統可以並列安裝到主文件系統上,也可以一個接一個地串連安裝到主文件系統上。

    已安裝的子文件系統也可從整個文件系統上卸下來,恢復安裝前的獨立狀態。

    1.建立文件系統
    
當硬盤完成分區后,應該在該分區上建立文件系統。這一步工作是通過mkfs工具來完成的。例如,如果需要在分區/dev/hda1上建立ext2文件系統,並檢查壞塊,應該使用以下命令:
    # mkfs -c /dev/hda1

    注意,只有root用戶才能建立或安裝/卸下文件系統。

    2.安裝文件系統
    
創建文件系統后,需要使用命令mount將該文件系統安裝到主文件系統中。命令mount有三個主要參數:
    ◆
需要安裝的文件系統類型,用“-t fstype”選項來指定,這與mkfs中的-t選項是一樣的。
    ◆
所需訪問的文件系統所在分區名,通常是位於目錄/dev中的特別設備文件;如果需要安裝網絡文件系統時,就使用該服務器上輸出的目錄名。
    ◆
 安裝新文件系統的路徑名,也就是放置新文件系統的安裝點(Mount Point)。通常這是一個空目錄名,並且是專門為安裝新文件系統而准備的。在Linux系統下,目錄/mnt是常用的文件系統安裝目錄,缺省情況下, CDROM和軟盤驅動器都分別安裝在其子目錄下。當然,文件系統也可以被安裝到其它空目錄中。例如,需要將MSDOS文件系統分區/dev/hda1安裝 到系統的空目錄/dos中,應該使用以下命令:
    # mount -t msdos /dev/hda1 /dos

    3.卸載文件系統
    
在關閉系統之前,為了保證文件系統的完整 性,所有安裝的文件系統都必須被卸載。通常在/etc/fstab文件中定義的文件系統都能夠自動卸載。但是,對於手工mount的文件系統,在關閉系統 之前必須手工卸載。有時候也需要在系統工作過程中手工卸載某個文件系統。手工卸載文件系統必須使用umount命令,umount命令將分區名或分區的安 裝點作為參數,格式如下:

umount <</font>分區名或分區的安裝點>

    例如,需要將已經安裝到/mnt/floppy目錄下的軟盤卸載,可以使用以下命令:
    # umount /mnt/floppy

    要注意,對於正在使用的文件系統,不能使用umount命令卸載。

本講我們介紹了有關Linux系統中常用命令格式、文件和目錄的概念、文件類型、目錄結構、文件的存取權限、文件系統的概念及其安裝命令等。有關文件操作的命令很多,讀者可以通過上機學習各種命令的使用方法,掌握其基本功能。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM