Linux下的文件系統為樹形結構,入口為/ 樹形結構下的文件目錄: 無論哪個版本的Linux系統,都有這些目錄,這些目錄應該是標准的。各個Linux發行版本會存在一些小小的差異,但總體來說,還是大體差不多。
1. / 文件系統的入口,最高一級目錄;
2. /bin 基礎系統所需要的命令位於此目錄,是最小系統所需要的命令,如:ls, cp, mkdir等。
這個目錄中的文件都是可執行的,一般的用戶都可以使用。
3. /boot 包含Linux內核及系統引導程序所需要的文件,比如 vmlinuz initrd.img 文件都位於這個目錄中。在一般情況下,GRUB或LILO系統引導管理器也位於這個目錄;
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 在ext2或ext3文件系統中,當系統意外崩潰或機器意外關機,而產生一些文件碎片放在這里。當系統啟動的過程中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 打印機、郵件、代理服務器等假脫機目錄;
Windows和Linux文件系統的區別 Linux文件系統與Windows文件系統有很大的差別。
Linux文件系統作為開端,只有一個單獨的頂級目錄結構。所有一切都從 '根' 開始,用 '/' 代表, 並且延伸到子目錄。DOS/Windows有不同的分區,同時目錄都存於分區上。linux則通過 '加載' 的方式把所有分區都放置在 '根' 下制定的目錄里。
一句話總結:Windows下,目錄結構屬於分區;Linux下,分區 '加載' 於目錄結構。 在Windows下, 啟動時檢測不同的分區並被賦予一個分區字母。在Linux下除非你加載一個分區或設備,否則系統不會知道那個分區的存在。這看上去也許不是訪問分區或設備的最方便的方式,但是這種方式提供了偉大的機動性。
這種構建的方式被稱為統一的文件系統,超越了Windows所使用的方式。舉個使用 /usr 的例子。這個目錄包含了大多數的系統可執行文件。在Linux文件系統下,你可以選擇把它加載為其他分區甚至網絡上的其他計算機。系統不會感知其中的不同,因為它表現出的只是本地目錄結構下眾多的目錄中的一個而已。你是否有妄圖在Windows下移動可執行文件和數據,而得到的是不得不去修改注冊表或干脆藍屏?你可曾奢望過移動 C: 到其他分區上?
1。關於文件系統
對存儲設備分區還是不夠的,我們還要對新增分區進行格式化;一個分區只有建立了某種 文件系統后,這個分區才能使用;建立文件系統過程,就是用相應格式化工具格式化分區的過程,這個過程和我們在Windows中格式化某個分區為NTFS分 區類似;沒有什么高深的內容,只是所用的工具不一樣罷了;
Linux操作系統中,幾乎支持目前主流的文件系統,比如NTFS(只讀)、FAT(可讀可寫)、ext2、ext3、reiserfs、hfs (MAC 操作系統的文件系統)、swap 交換分區... ... 還有一些咱們不熟悉的操作系統的文件系統等;
在Linux中,我們常用的文件系統無非是上面例出的這些;如果您新增了一個硬盤,可能想格 式化成 Linux的文件系統,最佳選擇是 reiserfs 或ext3;目前ext2已被 ext3取代;我們不推薦用ext2文件系統,ext2的使用風險比較大;速度最快的文件系統,當屬reiserfs;reiserfs 還有很多優點,比如更安全;ext3是Redhat認為最好的文件系統。
文件系統概念
1。*nix系統中:一切皆文件;
2。文件
a. )文件的成分: 無論文件是一個程序、一個文檔、一個數據庫,或者是一個目錄,操作系統都會賦予它如下所示的同樣的結構:
◆索引節點 又稱I節點,在文件系統結構中,包含有關相應文件的信息的一個記錄,這些信息包括文件權限、文件主、文件大小、存放位置、建立日期等。
◆數據 文件的實際內容,它可以是空的,也可以非常大,並且有自己的結構。
以圓點“.”開頭的文件名是隱含文件(dot files),默認方式下使用ls命令並不能把它們在屏幕上顯示出來。同樣,在默認情況下,Shell通配符並不匹配這類文件名。
方括號([ ]) : 與問號相似,只與一個字符匹配。它們的區別在於,問號與任意一個字符匹配,而方括號只與括號中列出的字符之一匹配。例如letter [123]只與文件letter1、letter2或letter3匹配,但不與文件 letter12匹配。可以用短橫線代表一個范圍內的字符,而不用將它們一一列出。例如,letter[1-3]是letter[123]的簡寫形式。但 是,要注意范圍內的字符都按升序排列,即[A-Z]是有效的,而[Z-A]是無效的。方括號中可以列出多個范圍,如[A-Za-z]可以和任意大寫或小寫 的字符相匹配。方括號中如果以驚嘆號“!”開始,表示不與驚嘆號后的字符匹配。
Linux操作系統支持普通文件、目錄文件、特別文件及符號鏈接文件等文件類型。
普通文件也稱作常規文件,包含各種長度的字節串。核心對這些數據沒有進行結構化,只是作為有序的字節序列把它提交給應用程序。應用程序自己組織和解釋這些數據,通常把它們歸並為下述類型之一:
◆文本文件,由ASCII字符構成。例如,信件、報告和稱作腳本(Script)的命令文本文件,后者由shell解釋執行。
◆數據文件,由來自應用程序的數字型和文本型數據構成。例如,電子表格、數據庫,以及字處理文檔。
◆可執行的二進制程序,由機器指令和數據構成。例如,上面所說的系統提供的命令。
使用file命令可以確定指定文件的類型。該命令可以將任意多個文件名當做參數,其一般使用格式是:file 文件名 [文件名...]
2. 目錄
目錄是一類特殊的文件,利用它可以構成文件系統的分層樹型結構。如同普通文件那樣,目錄文件也包含數據;但目錄文件與普通文件的差別是,核心對這些數據加以結構化,它是由成對的“I節點號/文件名”構成的列表。
◆I節點號是檢索I節點表的下標,I節點中存放有文件的狀態信息。
◆文件名是給一個文件分配的文本形式的字符串,用來標識該文件。在一個指定的目錄中,任何兩項都不能有同樣的名字。
每個目錄的第一項都表示目錄本身,並以“.”作為它的文件名。每個目錄的第二項的名字是“..”,表示該目錄的父目錄。
應注意:以“.”開頭的文件名表示隱含文件,使用帶-a選項的ls命令可以列出它們。
當把文件添加到一個目錄中的時候,該目錄的大小會增長,以便容納新文件名。當刪除文件時,目錄的尺寸並不減少,而是核心對該目錄項做上特殊標記,以便下次添加一個文件時重新使用它。ls命令不會列出這些未被使用的項。
Linux文件系統采用帶鏈接的樹形目錄結構,即只有一個根目錄(通常用“/”表示),其中含有下級子目錄或文件的信息;子目錄中又可含有更下級的子目錄或者文件的信息。這樣一層一層地延伸下去,構成一棵倒置的樹,如圖1所示。
圖1 Linux樹型目錄結構
在目錄樹中,根節點和中間節點(用圓圈表示)都必須是目錄,而普通文件和特別文件只能作為“葉子”出現。當然,目錄也可以作為葉子。
(1)用戶主目錄
當注冊進入系統時,主目錄就是當前工作目錄。主目錄往往位於/home目錄之下,並且與注冊名相同,例如,/home/mengqc。通常主目錄包含子目錄、數據文件,以及用於注冊環境的配置文件。
-
絕對路徑和相對路徑
什么情況下使用絕對路徑名,什 么情況下使用相對路徑名,取決於哪種方式涉及到的目錄更少。路徑短,不僅鍵盤輸入少,而且節省系統搜索路徑的時間,提高執行效率。例如,當前的工作目錄是 /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系統的文件系統路徑
絕對路徑是從/(也被稱為根目錄)開始的,比如/usr、/etc/X11。如果一個路徑是從/開始的,它一定是絕對路徑。
相對路徑是以 . 或 .. 開始的,.表示用戶當前操作所處的位置,而.. 表示上級目錄;在路徑中,.表示用戶當前所處的目錄,而..上級目錄,要把.和..當做目錄來看。
2。[root@localhost ~]# pwd 注:判斷用戶當前所處的位置,也就是說他到底位於哪?
use when you are lost.
3。
[root@localhost ~]# cd . 注:我們進入。
[root@localhost ~]# cd .. 注:我們切入/root的上級目錄。
注意,cd之后有個空格。
~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系統中常用命令格式、文件和目錄的概念、文件類型、目錄結構、文件的存取權限、文件系統的概念及其安裝命令等。有關文件操作的命令很多,讀者可以通過上機學習各種命令的使用方法,掌握其基本功能。