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