UNIX/目錄層級

文件系統層次結構標準en:Filesystem Hierarchy Standardw:FHS)定義了Linux作業系統中的主要目錄及目錄內容。在大多數情況下,它是一個傳統BSD文件系統層次結構的形式化與擴充。

FHS由Linux基金會維護,這是一個由主要軟件或硬件供應商組成的非營利組織,例如HPRed HatIBM、和Dell。當前的版本是2.3,在2004年1月29日公佈。

FHS 標準被不少流行的 UNIX 和類 UNIX 發行版所使用,使用這些系統時常常會用到這些知識。一些發行版可能不完全遵守這樣的條例,也有些使用符號連結之類的形式以便自定義系統。然而,這些方式得到的文件系統結構實際上與 FHS 差別不大。以下目錄結構是對 FHS UNIX 目錄樹的在一個現代發行版上的部署情況的敘述。

結構

編輯

根目錄/ 第一層次結構的根、 整個文件系統層次結構的根目錄

需要在單用戶模式可用的必要命令(可執行文件);面向所有用戶,例如catlscp

存引導程序文件,例如: 內核、initrd;時常是一個單獨的分區[1]

必要設備, 例如:, /dev/null.

特定主機,系統範圍內的配置文件

關於這個名稱目前有爭議。在貝爾實驗室關於UNIX實現文檔的早期版本中,/etc 被稱為etcetera,這是由於過去此目錄中存放所有不屬於別處的所有東西(然而,FHS限制/etc存放靜態配置文件,不能包含二進制文件)。自從早期文檔出版以來,目錄名稱已被以各種方式重新稱呼。最近的解釋包括反向縮略語如:"可編輯的文本配置"(英文 "Editable Text Configuration")或"擴展工具箱"(英文 "Extended Tool Chest")。/etc 的通常內容如下所列。

  • foo.d/ 屬於 foo 程序的目錄——.d 指代 directory,即目錄。
  • 00-bar, 01-baz, 99-final - 利用文件名排序的特點,實現按順序逐個讀取配置文件。常見於 init, fontconfig 等需要配置文件優先級關係的程序配置中。
  • xxxrc - run commands 的縮寫,指某個程序或系統啟動時執行的任務。
  • opt//opt/的配置文件
  • X11/X Window系統(版本11)的配置文件
  • sgml/SGML的配置文件
  • xml/XML的配置文件

/home/

編輯

用戶的家目錄,包含保存的文件、個人設置等,一般為單獨的分區。[2]

/bin//sbin/中二進制文件必要的文件。[3]

/media/

編輯

可移除媒體(如CD-ROM)的掛載點 (在FHS-2.3中出現)。

臨時掛載的文件系統。

可選應用軟件。常常以 /opt/软件名 的目錄層級(前綴)出現。

/proc/

編輯

虛擬文件系統,將內核進程狀態歸檔為文本文件。例如:uptime、 network。在Linux中,對應procfs格式掛載。

/root/

編輯

超級用戶家目錄

/sbin/

編輯

必要的系統二進制文件,例如: init、 ip、 mount。在一些激進的發行版中軟連結/bin

站點的具體數據,由系統提供。

臨時文件(參見 #/var/tmp),在系統重啟時目錄中文件不會被保留。

用於存儲只讀用戶數據的第二層次前綴); 包含絕大多數的()用戶工具和應用程式。是 UNIX Software Repository 的簡寫。在一些激進的發行版中,/ 下的不少目錄軟連結到此目錄下的相應目錄。

/usr/bin/

編輯

非必要可執行文件 (在單用戶模式中不需要);面向所有用戶。

/usr/include/

編輯

標準包含文件

/usr/lib/

編輯

/usr/bin//usr/sbin/中二進制文件的

/usr/sbin/

編輯

非必要的系統二進制文件,例如:大量網絡服務守護進程。在一些激進的發行版中軟連結/usr/bin

/usr/share/

編輯

體系結構無關(共享)數據。常見子目錄/子目錄名:

  • ./软件(-版本):這個程序的共享數據。以下是示例:
  • ./fonts:X11 字體。
  • ./infotexinfo 的文檔目錄。
  • ./man手冊頁
  • ./locale:多語言本地化數據。
  • ./doc:HTML、TXT 或其他格式的文檔,由某一些程序安裝。
  • ./zoneinfo:時區數據庫。

/usr/src/

編輯

原始碼,例如:內核原始碼及其頭文件。

/usr/X11R6/

編輯

X Window系統 版本 11, Release 6。不常使用。

/usr/local/

編輯

| 本地數據的第三層次(也是前綴), 具體到本台主機。通常而言有進一步的子目錄, 例如:bin/lib/share/。佈局與 /usr 類似,只不過 share/ 常被連結到 /usr/share[4]

變量文件——在正常運行的系統中其內容不斷變化的文件,如日誌,脫機文件和臨時電子郵件文件。有時是一個單獨的分區。

/var/cache/

編輯

應用程式緩存數據。這些數據是在本地生成的一個耗時的I/O或計算結果。應用程式必須能夠再生或恢復數據。緩存的文件可以被刪除而不導致數據丟失。

/var/lib/

編輯

狀態信息。 由程序在運行時維護的持久性數據。 例如:數據庫、包裝的系統元數據等。

/var/lock/

編輯

鎖文件,一類跟蹤當前使用中資源的文件。

/var/log/

編輯

日誌文件,包含大量日誌文件。

/var/mail/

編輯

用戶的電子郵箱

/var/run/

編輯

已經被/run代替。[5]

/var/spool/

編輯

等待處理的任務的脫機文件,例如打印隊列和未讀的郵件。

/var/spool/mail/

編輯

用戶的郵箱(不鼓勵的存儲位置)

/var/tmp/

編輯

在系統重啟過程中可以保留的臨時文件。

自最後一次啟動以來運行中的系統的信息,例如當前登錄的用戶和運行中的守護進程。常見的子目錄:

  • 由某個用戶的桌面環境創建<用户名>
  • media/:類似 /media,但是基本上是這個用戶獨佔的。

Linux 中作為 sysfs 出現。這個文件系統不僅可以把設備(devices)和驅動程序(drivers) 的信息從內核輸出到 用戶空間,也可以用來對設備和驅動程序做設置。(w:sysfs)

  1. A separate partition is generally only used when bootloaders are incapable of reading the main filesystem (e.g. SILO does not recognize XFS) or other problems not easily resolvable by users.
  2. 在較老的 UNIX 中作為 /Users 存在。
  3. 在較老的 UNIX 中作為 /Library 存在。
  4. Historically and strictly according to the standard, /usr/local/ is for data that must be stored on the local host (as opposed to /usr/, which may be mounted across a network). Most of the time /usr/local/ is used for installing software/data that are not part of the standard operating system distribution (in such case, /usr/ would only contain software/data that are part of the standard operating system distribution). It is possible that the FHS standard may in the future be changed to reflect this de-facto convention).
  5. Introducing /run-What's this /run directory doing on my system and where does it come from?March 30, 2011 by corbe