FHS文件系統各目錄功能
摘要:
本文主要介紹Linux的文件組織目錄結構。
一、Linux 目錄結構
在講 Linux 目錄結構之前,你首先要清楚一點東西,那就是 Linux 的目錄與 Windows 的目錄的區別,或許對于一般操作上的感受來說沒有多大不同,但從它們的實現機制來說是完全不同的。
一種不同是體現在目錄與存儲介質(磁盤,內存,DVD 等)的關系上,以往的 Windows 一直是以存儲介質為主的,主要以盤符(C 盤,D 盤…)及分區的來實現文件管理,然后之下才是目錄,目錄就顯得不是那么重要,除系統文件之外的用戶文件放在任何地方任何目錄也是沒有多大關系。所以通常 Windows 在使用一段時間后,磁盤上面的文件目錄會顯得雜亂無章(少數善于整理的用戶除外吧)。然而 UNIX/Linux 恰好相反,UNIX 是以目錄為主的,Linux 也繼承了這一優良特性。 Linux 是以樹形目錄結構的形式來構建整個系統的,可以理解為一個用戶可操作系統的骨架。雖然本質上無論是目錄結構還是操作系統內核都是存儲在磁盤上的,但從邏輯上來說 Linux 的磁盤是“掛在”(掛載在)目錄上的,每一個目錄不僅能使用本地磁盤分區的文件系統,也可以使用網絡上的文件系統。舉例來說,可以利用網絡文件系統(Network File System,NFS)服務器載入某特定目錄等。
1.FHS 標準
Linux 的目錄結構說復雜很復雜,說簡單也很簡單。復雜在于,因為系統的正常運行是以目錄結構為基礎的,對于初學者來說里面大部分目錄都不知道其作用,重要與否,特別對于哪些曾近的重度 Windows 用戶,他們會糾結很長時間,關于我安裝的軟件在哪里這類問題。說它簡單是因為,它其中大部分目錄結構是規定好了(FHS 標準),是死的,當你掌握后,你在里面的一切操作都會變得井然有序。
FHS(英文:Filesystem Hierarchy Standard 中文:文件系統層次結構標準),多數 Linux 版本采用這種文件組織形式,FHS 定義了系統中每個區域的用途、所需要的最小構成的文件和目錄同時還給出了例外處理與矛盾處理。
FHS 定義了兩層規范,第一層是, / 下面的各個目錄應該要放什么文件數據,例如 /etc 應該要放置設置文件,/bin 與 /sbin 則應該要放置可執行文件等等。
第二層則是針對 /usr 及 /var 這兩個目錄的子目錄來定義。例如 /var/log 放置系統登錄文件、/usr/share 放置共享數據等等。
可分享的(shareable) |
不可分享的(unshareable) |
|
不變的(static) |
/usr (軟件放置處) |
/etc (配置文件) |
/opt (第三方協力軟件) |
/boot (開機與核心檔) |
|
可變動的(variable) |
/var/mail (使用者郵件信箱) |
/var/run (程序相關) |
/var/spool/news (新聞組) |
/var/lock (程序相關) |
/下面的每個目錄的具體的功能如下圖所示
具體的規定如下表格所示
目錄 |
應放置的文件內容 |
/ |
根目錄root(/),一般建議在根目錄下只有目錄,不要直接有文件。根目錄是啟動時系統第一個載入的分區,所以所有啟動過程中會用到的文件都應該放在這個分區中。舉例來說,/etc、/bin、/dev、/lib、/sbin這5個子目錄都應該與根目錄連在一起,不可獨立成為某個分區。 |
/bin,/usr/bin, |
放置用戶可執行的二進制文件的目錄。 |
/boot |
放置Linux系統啟動時用到的文件。啟動會用到Linux的核心文件。這個目錄下面的文件vmlinuz就是Linux的核心。這一點非常重要,如果引導程序(loader)選擇grub,那么這個目錄內還有/boot/grub子目錄。 |
/dev |
在Linux系統上,任何設備都以文件類型存放在這個目錄中,例如鍵盤、鼠標、硬盤、光盤等。在此目錄下的文件會多出兩個屬性,分別是主設備號(major device number)與輔設備號(minor device number)。系統核心就是通過這兩個號碼來判斷設備的。重要的文件有/dev/null、/dev/tty[1-6]、/dev/ttyS*、/dev/lp*、/dev/hd*、/dev/sd*等。 |
/etc |
系統主要的設置文件幾乎都放在這個目錄內,例如人員的賬號密碼文件、各種服務的起始文件等。一般來說,這個目錄下的各文件屬性是可以讓一般用戶查看的,但只有root有權修改。在此目錄下的文件幾乎都是ASII的純文本文件。不過,FHS建議不要在這個目錄中放置可執行文件。比較重要的文件有:/etc/inittab、/etc/init.d、/etc/modprobe.conf、/etc/X11、/etc/fstab、/etc/sysconfig等。 |
/home |
這是系統默認的家目錄(home directory)。 |
/lib,/usr/lib, |
系統使用的函數庫的目錄。程序在運行過程中,可能會調用一些額外的參數,這需要函數庫的協助。這些函數庫就放在此處。比較重要的是/lib/modules目錄內有核心的相關模塊。 |
/lost+found |
系統出現異常,產生錯誤時,會將一些遺失的片段放于此目錄下,通常這個目錄會自動出現在某個分區頂層的目錄下。 |
/mnt/media |
這是軟盤與光盤的默認載入點。通常軟盤掛在/mnt/floppy下,光盤掛在/mnt/cdrom下。 |
/opt |
這是給主機額外安裝軟件所放的目錄。舉例來說,FC4使用Fedora團隊開發的軟件,如果想要自行安裝新的KDE桌面軟件,可以將該軟件安裝在這個目錄下。不過,以前的Linux系統中,我們還是習慣放在/usr/local目錄下。 |
/proc |
這個目錄本身是一個“虛擬文件系統”,它放置的數據都在內存中,例如系統核心、外部設備的狀態及網絡狀態等。因為這個目錄下的數據都在內存中,所以本身不占任何硬盤空間。比較重要的文件有/proc/cpuinfo、/proc/dma、/proc/interrupts、/proc/ioports、/proc/net/*等。 |
/root |
系統管理員(root)的家目錄。之所以放在這里,是因為系統第一個啟動就載入的分區為/,而我們希望/root能夠與/放在同一塊分區上。 |
/sbin,/usr/sbin, |
放一些系統管理員才會用到的可執行命令,例如:fdisk、mke2fs、fsck、mkswap、mount等。與/bin不太一樣的地方是,這幾個目錄是給root系統管理用的。但目錄下的執行文件可以讓一般用戶用來“查看”而不能設置。 |
/srv |
一些服務啟動之后,這些服務所需要訪問的數據目錄。舉例來說,WWW服務器需要的網頁數據就可以放在/srv/www中。 |
/tmp |
這是讓一般用戶或者是正在執行的程序臨時放置文件的地方。這個目錄是任何人都能訪問的,所以需要定期清理。當然,重要數據不可放在此目錄中。 |
/usr |
根據FHS規范的第二層內容,在/usr目錄下,包含系統的主要程序、圖形界面所需要的文件、額外的函數庫、本機自行安裝的軟件,以及共享的目錄與文件。它有點像Windows操作系統中的“Program files”與“Windows”這兩個目錄的結合。在此目錄下的重要子目錄有: · /usr/bin,/usr/sbin:一般身份用戶與系統管理員可執行文件放置目錄 · /usr/include:c/c++等程序語言的文件頭(header)與包含文件(include)放置處,當以tarball方式(*.tar.gz的方式安裝軟件)安裝某些數據時,會使用到里面的許多包含文件。 · /usr/lib:各種應用軟件的函數庫文件放置目錄。 · /usr/local:本機自行安裝的軟件默認放置的目錄。當前也適用于/opt目錄。在安裝完Linux之后,基本上所有的配置都有了,但軟件總是可以升級的,例如要升級代理服務,則通常軟件默認的安裝地方就是/usr/local中。當安裝完之后所得到的執行文件,為了與系統原執行文件區分,升級后的執行文件通常放在/usr/local/bin中。建議將后來才安裝的軟件放在這里,便于管理。 · /usr/share:共享文件放置的目錄,例如/usr/share/doc目錄放置一些系統幫助文件、/usr/share/man放置manpage文件。 · /usr/src:Linux系統相關的程序代碼放置目錄,例如/usr/src/linux為核心源碼。 · /usr/X11R6:系統內的X Window System所需的執行文件幾乎都放在這里。 |
/var |
這個目錄也很重要,也是FHS規范的第二層目錄內容。它主要放置系統執行過程中經常變化的文件,例如緩存(cache)或者是隨時更改的日志文件(log file)。此外,某些軟件執行過程中會寫入的數據庫文件,例如MySQL數據庫,也都寫入這個目錄中。它下面的主要目錄有: · /var/cache:程序文件在運行過程中的一些暫存盤。 · /var/lib:程序執行的過程中,使用的數據文件放置的目錄。例如locate數據庫與MySQL及rpm等數據庫系統,都寫在這個目錄中。 · /var/log:登錄文件放置的目錄,很重要。例如/var/log/messages就是總管所有登錄文件的文件。 · /var/lock:某些設備具有一次性寫入的特性,例如tab(磁帶機),此時,為了避免被其他人干擾正在運行的操作,會將該設備lock(鎖)起來,以確定該設備只能被單一程序所用。 · /var/run:某些程序或者是服務啟動后,會將它們的PID放在這個目錄下。 · /var/spool:是一些隊列數據存放的地方。例如主機收到電子郵件后,就會放到/var/spool/mail中,若信件暫時發不出去,就會放到/var/spool/mqueue目錄下,用戶工作任務分配(cron)則是放在/var/spool/cron中。 |
原創文章,作者:hanlln1,如若轉載,請注明出處:http://www.www58058.com/52138