Linux 標準目錄結構 FHS

由於利用 Linux 來開發產品或 distribution 的團隊實在太多了,若是每一個人都用本身的想法來配置文件放置的目錄,那麼將可能形成不少管理上的困擾。因此,後來就有了 Filesystem Hierarchy Standard(FHS)標準的出爐了。數據庫

根據 FHS 的官方文件指出,其主要目的是但願讓用戶能夠了解到數據一般放置於哪一個目錄下。也就是說,FHS 的重點在於規範每一個特定的目錄下應該要放置什麼樣子的數據而已。緩存

 

FHS 依據文件系統使用的頻繁與否與是否用戶隨意改動,而將目錄定義成四種交互做用的形態:bash

  可分享的:能夠分享給其餘系統掛載使用的目錄,因此包括執行文件與用戶的郵件等數據,是可以分享給網絡上其餘主機掛載用的目錄。網絡

  不可分享的:本身機器上面運行的設備文件或者是與程序有關的 socket 文件等,因爲僅與自身機器有關,因此不適合分享給其餘主機。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/:放置排隊等待其餘應用程程序使用的數據

相關文章
相關標籤/搜索