Linux基礎(chǔ)教程之文件層級結(jié)構(gòu)標(biāo)準(zhǔn)(FHS)解析
Linux文件層級結(jié)構(gòu)標(biāo)準(zhǔn)(FHS)
設(shè)計FHS(Filesystem Hierarchy Standard)的目的主要是為了給Unix-like系統(tǒng)的管理員提供一個管理系統(tǒng)以及目錄結(jié)構(gòu)的一個參考。
由于利用Linux源碼開發(fā)產(chǎn)品和發(fā)行版的企業(yè)或組織眾多,如果每個組織都按照自己的喜好來組織系統(tǒng)中的文件結(jié)構(gòu),網(wǎng)絡(luò)上必然出現(xiàn)各種各樣的文件結(jié)構(gòu)。這些產(chǎn)品的用戶就不得不為每種不同的文件系統(tǒng)結(jié)構(gòu)花費時間來學(xué)習(xí)。有了FHS之后,幾乎所有的Unix-like系統(tǒng)的發(fā)行商或軟件開發(fā)者都遵從該建議規(guī)范每個特定目錄下分別只放哪些文件,方便了文件的組織和查找。
FHS也根據(jù)實際使用的需求持續(xù)更新,完整的FHS可參考(http://www.pathname.com/fhs/)
/, /usr, /var
FHS根據(jù)文件的可共享、不可共享、靜態(tài)和動態(tài)等特點,將目錄樹架構(gòu)分為/、/usr、/var三部分。
- / 根目錄是整個系統(tǒng)最重要的一個目錄,因為在Linux系統(tǒng)中所有的目錄都必須掛載在根目錄下,也即所有的目錄都是由根目錄衍生出來。系統(tǒng)開機是所需要的開機軟件、內(nèi)核文件、函數(shù)庫等都必須在根目錄下。因此FHS也建議根目錄不要安裝在非常大、數(shù)據(jù)存取非常活躍的分區(qū)上,如此一來就能盡可能地降低系統(tǒng)不必要的錯誤。建議:根目錄越小越好,且應(yīng)用程序安裝目錄不要和根目錄放置于同一分區(qū)。根目錄下一般建議由以下耳機子目錄:
- /bin 供所有用戶使用的基本命令程序文件
- /sbin 系統(tǒng)管理員使用的工具程序
- /boot 引導(dǎo)加載器(bootloader)必須用到的靜態(tài)文件:kernel、initramfs(initrd)、grub等
- /dev 存儲特殊文件或設(shè)備文件: 字符設(shè)備(線性設(shè)備)、塊設(shè)備(隨機設(shè)備)
- /etc 系統(tǒng)程序的配置文件(只能為靜態(tài)的,不能是二進制)
- /lib、/lib64 為系統(tǒng)啟動或根文件系統(tǒng)上的應(yīng)用程序(/bin, /sbin)提供共享庫(libc.so.* ld*),以及為內(nèi)核提供內(nèi)核模塊(modules)
- /media 便攜式設(shè)備的掛載點,cdrom、floopy等
- /mnt 其他文件系統(tǒng)的臨時掛載點
- /opt 第三方程序的安裝位置,可選路徑;
- /srv 當(dāng)前主機為服務(wù)提供的數(shù)據(jù)
- /tmp 為那些會產(chǎn)生臨時文件的程序提供的用于存儲臨時文件的目錄
- /usr user hierarchy 全局共享只讀數(shù)據(jù)路徑
- /var var hierarchy存儲常發(fā)生變化的文件
- /proc 內(nèi)核級進程存儲其相關(guān)信息,多為內(nèi)核參數(shù),例如net.ipv4.ipforward虛擬為net/ipv4/ipforward,存儲于/proc/sys
- /sys sysfs虛擬文件系統(tǒng)提供了一種比proc更為理想的訪問內(nèi)核數(shù)據(jù)的途徑;為管理內(nèi)核提供了一種統(tǒng)一模型的接口
- /usr 根據(jù)FHS建議軟件安裝后將他們的數(shù)據(jù)合理地分別放置到這個目錄下,而不要自行新建該軟件自己的獨立目錄。/usr放置的數(shù)據(jù)屬于可分享的且不可變動的,/usr可分享給局域網(wǎng)內(nèi)的其他主機來使用。
- /usr/bin
- /usr/sbin
- /usr/lib
- /usr/lib64
- /usr/include C程序頭文件
- /usr/share 命令手冊頁和自帶文檔等
- /usr/local 另一個層級結(jié)構(gòu),讓系統(tǒng)管理員安裝本地應(yīng)用程序,通常用于安裝第三方軟件
- /usr/src 程序的源碼
- /var 主要存儲常變化的文件,包括緩存(cache)、登錄文件(logfile)以及某些軟件運行所產(chǎn)生的文件,包括程序文件(lock file, run file),或者例如MySQL數(shù)據(jù)庫的文件等。
- /var/cache 應(yīng)用程序產(chǎn)生的緩存文件
- /var/lib 程序執(zhí)行過程中,需要用到的數(shù)據(jù)文件放置的目錄。此目錄下各自的軟件應(yīng)該要有各自的目錄。
- /var/lib 某些設(shè)備或者文件資源一次只能被一個應(yīng)用程序所使用,如果同時有兩個程序使用該設(shè)備時,就可能產(chǎn)生一些錯誤,因此就得要將該設(shè)備或文件上鎖(lock),以確保該文件或設(shè)備只給一個程序使用。
- /var/log 登錄文件 /var/log/messages, /var/log/wtmp
- /var/mail 個人電子郵箱目錄,通常與/var/spool/mail/目錄互為鏈接
- /var/run 與運行中的進程相關(guān)的數(shù)據(jù),PID等
- /var/spool 存放等待其他程序使用的數(shù)據(jù)
- /var/tmp 下次啟動前會被刪除的臨時數(shù)據(jù)