FHS三层目录结构
語
READ
大家有沒有發(fā)現(xiàn),每套Linux distribution 版本的配置文件、執(zhí)行文件、每個目錄內放置的內容,其實都差不多?
換個想法,如果每接觸一種Linux版本,目錄結構完全不同,大家是不是會有很多困擾?
為了解決這種困擾,1993年8月,開發(fā)一套文件系統(tǒng)層次結構標準就變得非常迫切。這個標準,努力重整Linux文件和目錄結構。1994年2月14日,發(fā)布了一個針對Linux操作系統(tǒng)的FSSTND(Filesystem Standard);但它并不能解決其他類Unix系統(tǒng)目錄層次結構問題。故,1996年初,在BSD開發(fā)社區(qū)成員的協(xié)助下,FHS(Filesystem Hierarchy Standard),文件系統(tǒng)層次結構標準開發(fā)成功。
FHS定義了Linux操作系統(tǒng)中的主要目錄及目錄結構。通過指定文件系統(tǒng)各個區(qū)域的指導性原則、制定最少應該包含的必需的文件和文件夾、列舉原則中的例外情況和與歷史沖突的特殊情況,使得用戶或應用程序可以預測已安裝的文件和文件夾的位置。
FHS根據(jù)文件系統(tǒng)使用的頻繁與否和是否允許用戶隨意改動,將目錄定義為四種交互作用的形態(tài),如下表所示:
四種狀態(tài)詳解:
- 可分享的:可以分享給其他系統(tǒng)掛在使用的目錄,如用戶郵件等數(shù)據(jù),是可以分享給網絡上其他主機掛在用的目錄。- 不可分享的:如本機運行的設備文件等數(shù)據(jù),由于與自身機器特性相關,不適合分享給其他主機。- 不變的:有些數(shù)據(jù)是不會隨著不同的Linux發(fā)行版而變動的,如函數(shù)庫、系統(tǒng)管理員所管理的主機服務配置文件等。- 可變動的:經常改變的數(shù)據(jù),如登錄文件等。
?
事實上,FHS僅定義了三層目錄下面的內容:
/:與開機系統(tǒng)有關
/usr:UNIX Software Resource,與軟件安裝/執(zhí)行相關。不是user的縮寫哦!
/var:variable,與系統(tǒng)運作過程相關。
/(根目錄)
**/(根目錄):**最最最重要的目錄,沒有之一!該目錄是所有目錄的源,而且還與開機、還原、修復系統(tǒng)相關!所以FHS標準建議,根目錄所在分區(qū)應越小越好。與應用程序所安裝的軟件應區(qū)分開分區(qū),這樣不僅提高系統(tǒng)性能,而且還會保障系統(tǒng)的安全性。
為保障系統(tǒng)的正常運行,根目錄下應包含如下文件:
/bin:存放單用戶維護模式下還能被操作的命令。所有用戶(普通用戶和root)均可調用。
/boot:存放與系統(tǒng)啟動相關的文件,如開機菜單、配置文件等。
/dev:以文件的形式,存放設備和接口設備。只要訪問這個目錄下的A文件,就相當于訪問了A設備。
/etc:配置文件,存放幾乎所有系統(tǒng)的主要配置文件,如用戶賬號(passwd)密碼(shadow)、環(huán)境變量(profile)等信息。權限:普通用戶可讀,root可讀可寫。FHS標準建議,不將可執(zhí)行文件存放在此。
/home:存放所有用戶的主目錄。在創(chuàng)建一個普通用戶時,此文件夾就會創(chuàng)建一個用戶主文件夾。
/lib:library,存放開機和/bin&/sbin調用的數(shù)據(jù)庫。尤其是/lib/modules/目錄,存放的是內和相關的模塊(驅動程序)。
/media:媒體掛載的目錄。該目錄下的設備目錄文件,均可刪除。
/mnt:臨時掛載使用的目錄。
/mnt /media /dev的區(qū)別:
- /mnt :一般為空,系統(tǒng)管理員用來手動掛載臨時媒體設備用的。- /media:自動掛載的設備的目錄,如插入一個U盤,就會在/media目錄下生成一個u盤的目錄。- /dev:存放的是訪問外部設備文件的接口。因為linux文件系統(tǒng)與外接設備上的數(shù)據(jù)組織可能不同,沒有辦法直接讀取。所以需要mount /dev/sda1 /mnt/usb1 ,轉化成Linux自己的文件系統(tǒng),然后解析并讀取數(shù)據(jù)。
?
/opt:第三方軟件存放的目錄。
/root:系統(tǒng)管理員的主文件夾。將root主文件夾與根目錄放在一個分區(qū),可以使得單用戶維護模式,僅掛載根目錄時,該目錄可以擁有root的主文件夾。
/sbin:存放管理員使用的基本的系統(tǒng)及系統(tǒng)維護程序。一般只有系統(tǒng)管理員使用,普通用戶不可用。
/srv:service,某些網絡服務啟動后,所要取用的數(shù)據(jù)所在目錄。
/tmp:temple,一般用戶或正在執(zhí)行程序暫放文件的地方。重要數(shù)據(jù)不會存放在此。FHS建議開機清除一次該目錄下的內容。
Attention!!!
根目錄與開機相關,有些人想將根目錄所在分區(qū)縮之又縮。但是需要注意的是,與開機相關的目錄,不能跟根目錄分開存儲在兩個分區(qū)。
開機相關目錄:/etc、/bin、/dev、/lib、/sbin
/usr
/usr:存放的是UNIX操作系統(tǒng)軟件資源數(shù)據(jù)。FHS建議軟件開發(fā)者將數(shù)據(jù)放置在此目錄的子目錄下。類似Windows 的“C:\Windows”和“C:\Program Files”的綜合體。
一般/usr的的子目錄有:
/usr/bin:普通用戶的可使用命令。
/usr/sbin:非系統(tǒng)正常運行所需要的系統(tǒng)命令。如某些網絡服務器軟件的服務命令(daemon)。
/bin、/sbin、/usr/bin、/usr/sbin的區(qū)別:
/bin與/sbin需與/(根目錄)同一分區(qū),/usr/bin和/usr/sbin可以與/根目錄不同分區(qū)。
- /bin存放的是系統(tǒng)的一些指令,如cat、chmod等;- /sbin存放的是一些系統(tǒng)管理員管理系統(tǒng)用的指令,如dump、init、shutdown等;
/bin和sbin在掛載其他文件系統(tǒng)前就可以使用。因為隨著根目錄(或理解為開機)啟動。 - /usr/bin 存放的用戶后期安裝的應用程序的運行腳本,如gcc、diff、gzip等;- /usr/sbin 存放的是用戶安裝的系統(tǒng)管理必需的程序,如httpd、tcpd等。
?
/usr/include:某些程序語言的頭文件和包含文件存儲目錄。
/usr/lib:應用程序的函數(shù)庫、目標文件,以及一些執(zhí)行文件或腳本。如果使用的是X86_64系統(tǒng),會有/usr/lib64目錄。
/usr/local:存放系統(tǒng)管理員在本機自行下載安裝的軟件。
/usr/share:存放共享文件。這個目錄下的數(shù)據(jù),基本都是文本文件,幾乎不分硬件架構,均可讀取!如/usr/share/man(在線幫助文檔)
/usr/src:源碼存放處。除了內核源碼存放在/usr/src/linux目錄下。
/var
/var:針對常態(tài)性變動的文件,如緩存、登錄文件等。
/var/cache:存放應用程序運行時產生的緩存文件。
/var/lib:存放程序執(zhí)行過程中需要使用的數(shù)據(jù)文件。
/var/log:存放登錄文件目錄。如var/log/messages等。
/var/run:存放程序或服務啟動后的PID。
/var/spool:存放等待程序使用的數(shù)據(jù)。如待發(fā)送的郵件。
各家distributions,只要遵循FHS標準即可。其他子目錄層級內的目錄可以有所不同,這樣就可以實現(xiàn)各家的個性化設置了。如CentOS的網絡設置數(shù)據(jù)存放在/etc/sysconfig/network-scripts目錄下,但SuSE則放在/etc/sysconfig/network下。
是WEB平臺部測試技術平臺化、效率化的先鋒力量!
總結
- 上一篇: ncnn环境搭建一 - windows下
- 下一篇: 前缀表达式(无括号)转成中缀表达式(有括