FHS(Filesystem Hierarchy Standard 文件系统层次化标准)
文章目錄
- 一、根目錄 (/) 的意義與內容
- 二、/usr/ 的意義與內容
- 三、/var/ 的意義與內容
- 四、目錄樹(directory tree)
- 五、絕對路徑與相對路徑
FHS 是 File System Hierarchy Standard(文件系統層次化標準)的縮寫,多數Linux 版本采用這種文件組織形式,類似于 Windows 操作系統中 c 盤的文件目錄,FHS 采用樹形結構組織文件。FHS 定義了系統中每個區域的用途、所需要的最小構成的文件和目錄,同時還給出了例外處理與矛盾處理。
根據 FHS(Filesystem Hierarchy Standard) 的官方文件指出, 他們的主要目的是希望讓使用者可以了解到已安裝軟件通常放置于那個目錄下, 所以他們希望獨立的軟件開發商、操作系統制作者、以及想要維護系統的用戶,都能夠遵循FHS的標準。 也就是說,FHS的重點在于規范每個特定的目錄下應該要放置什么樣子的數據而已。
FHS 針對目錄樹架構僅規定了三個目錄下應該放置什么數據:
/ (根目錄):與開機系統有關;
/usr/ (unix software resource):與軟件安裝/執行有關;
/var/ (variable):與系統運作過程有關。
由于 FHS 僅是定義出最上層(/)及次層(/usr/, /var/)的目錄內容應該要放置的文件或目錄數據, 因此,在其他次目錄層級內,就可以隨開發者自行來配置了。
一、根目錄 (/) 的意義與內容
根目錄是整個系統最重要的一個目錄,因為不但所有的目錄都是由根目錄衍生出來的, 同時根目錄也與開機/還原/系統修復等動作有關。 由于系統開機時需要特定的開機軟件、核心文件、開機所需程序、 函式庫等等文件數據,若系統出現錯誤時,根目錄也必須要包含有能夠修復文件系統的程序才行。 因為根目錄是這么的重要,所以在FHS的要求方面,他希望根目錄不要放在非常大的分區, 因為越大的分區內你會放入越多的數據,如此一來根目錄所在分區就可能會有較多發生錯誤的機會。
因此FHS標準建議:根目錄(/)所在分區應該越小越好, 且應用程序所安裝的軟件最好不要與根目錄放在同一個分區內,保持根目錄越小越好。 如此不但效能較佳,根目錄所在的文件系統也較不容易發生問題。說白了,就是根目錄和 Windows 的 C 盤一個樣。
要注意的是,因為根目錄與開機有關,開機過程中僅有根目錄會被掛載, 其他分區則是在開機完成之后才會持續的進行掛載。因此根目錄下與開機過程有關的目錄, 就不能夠與根目錄放到不同的分區去。
哪些目錄不可與根目錄分開呢?如下這些:
/etc:配置文件
/bin:重要執行檔
/dev:所需要的設備文件
/lib:執行檔所需的函式庫與核心所需的模塊
/sbin:重要的系統執行文件
這五個目錄不可與根目錄分開在不同的分區。
二、/usr/ 的意義與內容
依據 FHS 的基本定義,/usr里面放置的數據屬于可分享的與不可變動的(shareable, static), 如果你知道如何透過網絡進行分區的掛載(例如在服務器篇會談到的NFS服務器),那么/usr確實可以分享給局域網絡內的其他主機來使用喔。
/usr不是user的縮寫,其實usr是Unix Software Resource的縮寫, 也就是Unix操作系統軟件資源所放置的目錄,而不是用戶的數據啦。這點要注意。 FHS建議所有軟件開發者,應該將他們的數據合理的分別放置到這個目錄下的次目錄,而不要自行建立該軟件自己獨立的目錄。
因為是所有系統默認的軟件(distribution發布者提供的軟件)都會放置到/usr底下,因此這個目錄有點類似Windows 系統的C:\Windows\ + C:\Program files\這兩個目錄的綜合體,系統剛安裝完畢時,這個目錄會占用最多的硬盤容量。
三、/var/ 的意義與內容
如果 /usr/ 是安裝時會占用較大硬盤容量的目錄,那么/var就是在系統運作后才會漸漸占用硬盤容量的目錄。 因為/var目錄主要針對常態性變動的文件,包括緩存(cache)、登錄檔(log file)以及某些軟件運作所產生的文件, 包括程序文件(lock file, run file),或者例如MySQL數據庫的文件等等。
四、目錄樹(directory tree)
在Linux底下,所有的文件與目錄都是由根目錄開始的。那是所有目錄與文件的源頭, 然后再一個一個的分支下來,因此,我們也稱這種目錄配置方式為:目錄樹(directory tree), 這個目錄樹的主要特性有:
五、絕對路徑與相對路徑
除了需要特別注意的 FHS 目錄配置外,在文件名部分我們也要特別注意。因為根據檔名寫法的不同,也可將所謂的路徑(path)定義為絕對路徑(absolute)與相對路徑(relative)。 這兩種文件名/路徑的寫法依據是這樣的:
絕對路徑:由根目錄(/)開始寫起的文件名或目錄名稱, 例如 /home/dmtsai/.bashrc。
相對路徑:相對于目前路徑的文件名寫法。 例如 ./home/dmtsai 或 http://www.cnblogs.com/home/dmtsai/ 等等。反正開頭不是 /就屬于相對路徑的寫法。
而你必須要了解,相對路徑是以你當前所在路徑的相對位置來表示的。舉例來說,你目前在 /home 這個目錄下, 如果想要進入 /var/log 這個目錄時,可以怎么寫呢?
cd /var/log # absolutecd ../var/log # relative因為你在 /home 底下,所以要回到上一層 (../) 之后,才能進入到目錄 /var 下,特別注意這兩個特殊的目錄:
.:代表當前的目錄,也可以使用 ./ 來表示。
..:代表上一層目錄,也可以 ../ 來代表。
這兩個 . 與 .. 目錄概念是很重要的,你常常會看到 cd .. 或 ./command 之類的指令下達方式, 一個表示返回到上級目錄,一個表示執行當前目錄下的一個指令。
**實例1:**如何先進入 /var/spool/mail/ 目錄,再進入到 /var/spool/cron/ 目錄內?
命令語句如下所示:
說明:
由于/var/spool/mail與/var/spool/cron是同樣在/var/spool/目錄中。如此就不需要在由根目錄開始寫起了。這個相對路徑是非常有幫助的,尤其對于某些軟件開發商來說。 一般來說,軟件開發商會將數據放置到/usr/local/里面的各相對目錄。 但如果用戶想要安裝到不同目錄呢?就得要使用相對路徑。
**實例2:**網絡文件常常提到類似 ./run.sh 之類的數據,這個指令的意義為何?
說明:
由于指令的執行需要變量的支持,若你的執行文件放置在本目錄,并且本目錄并非正規的執行文件目錄(/bin, /usr/bin等為正規),此時要執行指令就得要嚴格指定該執行檔。./ 代表本目錄的意思,所以 ./run.sh 代表執行本目錄下名為 run.sh 的文件
官方文檔地址:
http://www.pathname.com/fhs/
總結
以上是生活随笔為你收集整理的FHS(Filesystem Hierarchy Standard 文件系统层次化标准)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 黑芝麻糊冲泡方法 如何冲泡黑芝麻糊
- 下一篇: QPW 系统管理后台用户表(tm_use