因為利用 Linux 來開發產品或 distribution 的團隊實在太多了,如果每個人都用自己的想法來配置文件放置的目錄,那么將可能造成很多管理上的困擾。所以,后來就有了 Filesystem Hierarchy Standard(FHS)標准的出爐了。
根據 FHS 的官方文件指出,其主要目的是希望讓用戶可以了解到數據通常放置於哪個目錄下。也就是說,FHS 的重點在於規范每個特定的目錄下應該要放置什么樣子的數據而已。
FHS 依據文件系統使用的頻繁與否與是否用戶隨意改動,而將目錄定義成四種交互作用的形態:
可分享的:可以分享給其他系統掛載使用的目錄,所以包括執行文件與用戶的郵件等數據,是能夠分享給網絡上其他主機掛載用的目錄。
不可分享的:自己機器上面運行的設備文件或者是與程序有關的 socket 文件等,由於僅與自身機器有關,所以不適合分享給其他主機。
不變的:有些數據是不會經常變動的,只會隨着系統版本而變動。例如函數庫、說明文件、系統管理員所管理的主機服務配置文件等。
可變動的:經常改變的數據,例如登錄文件、用戶文件等。
根目錄(/)
根目錄是整個系統最重要的一個目錄,因為不但所有的目錄都是由根目錄衍生出來的,同時根目錄也與開機、還原、系統修復等操作有關。
因此 FHS 標准建議:根目錄(/)所在分區應該越小越好,且應用程序所安裝的軟件最好不要與根目錄放在同一個分區內,保持根目錄越小越好。如此不但性能較好,根目錄所在的文件系統也比較不容易發生問題。
執行文件目錄(/bin)
系統有很多放置執行文件的目錄,但 /bin 比較特殊。因為 /bin 放置的是在單用戶維護模式下還能被操作的命令。在 /bin 下面的命令可以被 root 與一般賬號所使用,主要有 cat,chmod,chown,date,mv,mkdir,cp,bash 等常用的命令。
開機文件目錄(/boot)
這個目錄主要放置開機會使用到的文件,包括 Linux 內核文件以及開機菜單與開機所需配置文件等。
驅動設備目錄(/dev)
在 Linux 系統上,任何設備與接口設備都是以文件的形式存在於這個目錄當中的。你只要通過訪問這個目錄下面的某個文件,就等於訪問某個設備。比較重要的文件有 /dev/null,/dev/zero,/dev/tty 等。
配置文件目錄(/etc)
系統主要的配置文件幾乎都放置在這個目錄內,例如人員的賬號密碼文件、各種服務的起始文件等。一般來說,這個目錄下的各個文件屬性是可以讓一般用戶查閱的,但只有 root 有權利修改。比較重要的文件有 /etc/init.d,/etc/inittab,/etc/sysconfig 等。
用戶主文件夾(/home)
這是系統默認的用戶主文件夾(home directory)。在你創建一個一般用戶賬號時,默認的用戶主文件夾都會規范到這里來。~ 代表當前用戶的主文件夾。
系統函數庫(/lib)
系統的函數庫非常多,而 /lib 放置的則是在開機時會用到的函數庫,以及在 /bin 或 /sbin 下面的命令會調用的函數庫而已。
* 你可以把函數庫想象成是“外掛”,某些命令必須要有這些“外掛”才能夠順利完成程序的執行之意。
媒體設備暫掛區(/media)
media 是“媒體”的英文,顧名思義,這個 /media 下面放置的就是可刪除的設備。包括軟盤、光盤、DVD等設備都暫時掛載於此。常見的文件名有 /media/floppy,/media/cdrom 等。
額外設備暫掛區(/mnt)
如果你想要暫時掛載某些額外的設備,一般建議你可以放置到這個目錄中。在比較早的時候,這個目錄的用途與 /media 相同。只是有了 /media 之后,這個目錄就被用來暫時掛載用了。
第三方軟件安裝目錄(/opt)
這個目錄是用於安裝第三方應用程序的,可以由用戶自己指定安裝位置。當需要卸載第三方應用程序時,可以直接刪除安裝目錄,而不影響系統其它任何設置。
管理員主文件夾(/root)
系統管理員(root)的主文件夾。之所以放在這里,是因為如果進入單用戶維護模式而僅掛載根目錄時,該目錄就能夠擁有root的主文件夾,所以我們會希望root的主文件夾與根目錄放置在同一個分區中。
重要系統執行文件(/sbin)
Linux 有非常多的命令是來設置系統環境的,這些命令只有 root 才能夠利用來“設置”系統,其他用戶最多只能用來“查詢”而已。放在 /sbin 下面的為開機過程中所需的,里面包括了開機、修復、還原系統所需要的命令。
服務數據存放目錄(/srv)
srv 可以視為“service”的縮寫,是一些網絡服務啟動之后,這些服務所需要取用的數據目錄。常見的服務例如 WWW、FTP 等。舉例來說,WWW 服務需要的網頁數據就可以放置在 /srv/www/ 里。
臨時文件存放目錄(/tmp)
這是讓一般用戶或者是正在執行的程序暫時放置文件的地方。這個目錄是任何人都能夠訪問,所以你需要定期清理一下。當然,重要數據不可放置在此目錄,因為系統會不定期將 /tmp 目錄下的數據全部刪除。
丟失內容修復目錄(/lost+found)
這個目錄是使用標准的 ext2/ext3 文件系統格式才會產生的一個目錄,目的相當於文件系統發生錯誤時,將一些丟失的片段放置到這個目錄下。這個目錄通常會在分區的最頂層存在。
虛擬文件系統目錄(/proc)
這個目錄本身是一個虛擬文件系統(virtual filesystem)。它放置的數據都是在內存當中,例如系統內核、進程、外部設備以及網絡狀態等。因為這個目錄下的數據都是在內存當中的,所以本身並不占任何硬盤空間。
虛擬文件系統目錄(/sys)
這個目錄其實跟 /proc 非常類似,也是一個虛擬的文件系統,主要也是記錄與內核相關的信息。包括目前已加載的內核模塊與內核檢測到的硬件設備信息等。這個目錄同樣不占硬盤容量。
系統軟件資源目錄(/usr)
很多小白都會誤以為 /usr 是 user 的縮寫,其實 usr 是 Unix Software Resource 的縮寫,也就是 “UNIX 操作系統軟件資源” 所放置的目錄,而不是用戶的數據,這點需要注意。
FHS 建議所有軟件開發者應該將他們的數據合理地分別放置到這個目錄下的子目錄,而不要自行新建該軟件的獨立目錄。
/usr/bin/:絕大部分的用戶可使用命令都放在這里
/usr/include/:C/C++等程序語言的頭文件(header)與包含文件(include)放置處
/usr/lib/:包含各應用軟件的函數庫、目標文件以及一些不被一般用戶慣用的執行文件或腳本
/usr/local/:系統管理員在本機自行安裝下載的軟件建議安裝到此目錄
/usr/sbin/:非系統正常運行所需的系統命令
/usr/share/:放置共享文件的地方
/usr/src/:一般源碼建議放置到這里
常態可變動文件目錄(/var)
該目錄主要針對常態性可變動文件,包括緩存(cache)、登錄文件(log file)以及某些軟件運行所產生的文件,包括程序文件(lock file、run file),或者例如MySQL數據庫的文件等。
如果 /usr 是安裝時會占用較大硬盤容量的目錄,那么 /var 就是在系統運行后才會漸漸占用硬盤容量的目錄。
/var/cache/:應用程序本身運行過程中會產生的一些暫存文件
/var/lib/:程序本身執行的過程中,需要使用到的數據文件放置的目錄
/var/lock/:目錄下的文件資源一次只能被一個應用程序所使用
/var/log/:放置登錄文件的目錄
/var/mail/:放置個人電子郵件信箱的目錄
/var/run/:某些程序或服務啟動后的PID目錄
/var/spool/:放置排隊等待其他應用程程序使用的數據
內容為轉載 ,方便自己觀看!!!