文件系統層次結構標準

定義Linux作業系統中的目錄結構與目錄內容

文件系統層次結構標準(英語:Filesystem Hierarchy StandardFHS)定義了Linux操作系統中的主要目錄及目錄內容。[1]FHS由Linux基金會維護。 目前版本為3.0版,於2015年發布。[2]

文件系統層次結構標準
開發者Linux基金會
首次發布1994年2月14日,​30年前​(1994-02-14
最新版本
3.0
2015年6月3日,​9年前​(2015-06-03
網站官方網站
Official website (Historical)

概述

多數Linux發行版遵從FHS標準並且聲明其自身政策以維護FHS的要求。 [3] [4] [5] [6] 但截至2009年,包括由自由標準小組成員參與開發的版本在內的絕大多數發行版,並不完全執行建議的標準。

當FHS建立之時,其他的UNIX和類Unix操作系統已經有了自己的標準,尤其是hier(7)文件系統布局描述。 自從第七版Unix(於1979年發布)以來已經存在,或是SunOS filesystem(7)[7] 和之後的Solaris filesystem(5)。 例如,macOS使用如 /Library/Applications/Users 等長名與傳統UNIX目錄層次保持一致。

現在的Linux發行版包含一個/sys目錄作為虛擬文件系統(sysfs,類似於 /proc,一個procfs),它存儲且允許修改連接到系統的設備,然而許多傳統UNIX和類Unix操作系統使用/sys作為內核代碼樹的符號鏈接

一些Linux系統如GoboLinuxSyllable Server使用了和FHS完全不同的文件系統層次組織方法。

歷史

開發一套文件系統層次結構標準的進程始於1993年8月,標準努力重整Linux的文件和目錄結構。FSSTND(英文Filesystem Standard),一個針對Linux操作系統的文件系統層次結構標準在1994年2月14日發布。 後續的修正版本分別在1994年10月9日和1995年3月28日發布。

在1996年初, 開發一個更加全面的、不僅解決Linux,而且解決其他類Unix系統目錄層次結構問題的FSSTND的計劃在BSD開發社區成員的協助下正式被採納。因此,計劃重點解決在類Unix系統上普遍存在的問題。 為了適應標準範圍的擴充,標準的名稱修改為文件系統層次結構標準。

目錄結構

在FHS中,所有的文件和目錄都出現在根目錄"/"下,即使他們存儲在不同的物理設備中。但是請注意,這些目錄中的一些可能或可能不會在Unix系統上出現,這取決於系統是否含有某些子系統,例如X Window系統的安裝與否。

這些目錄中的絕大多數都在所有的UNIX操作系統中存在,並且一般都以大致類似的方法使用;然而,這裡的描述是針對於FHS的,並未考慮除了Linux平台以外的權威性。

目錄 描述
/ 第一層次結構 的根、 整個文件系統層次結構的根目錄
/bin/ 需要在單用戶模式可用的必要命令(可執行文件);面向所有用戶,例如catlscp
/boot/ 引導程序文件,例如: kernelinitrd;時常是一個單獨的分區[8]
/dev/ 必要設備, 例如:/dev/null.
/etc/ 特定主機,系統範圍內的配置文件

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

/etc/opt/
/opt/的配置文件
/etc/X11/
X Window系統(版本11)的配置文件
/etc/sgml/
SGML的配置文件
/etc/xml/
XML的配置文件
/home/ 用戶的家目錄,包含保存的文件、個人設置等,一般為單獨的分區。
/lib/ /bin//sbin/中二進制文件必要的文件。
/media/ 可移除媒體(如CD-ROM)的掛載點 (在FHS-2.3中出現)。
/mnt/ 臨時掛載的文件系統。
/opt/ 可選應用軟件 [12]
/proc/ 虛擬文件系統,將內核進程狀態歸檔為文本文件。例如:uptime、 network。在Linux中,對應Procfs格式掛載。
/root/ 超級用戶家目錄
/sbin/ 必要的系統二進制文件,例如: init、 ip、 mount。
/srv/ 站點的具體數據,由系統提供。
/tmp/ 臨時文件(參見 /var/tmp),在系統重啟時目錄中文件不會被保留。
/usr/ 用於存儲只讀用戶數據的第二層次; 包含絕大多數的()用戶工具和應用程序[13]
/usr/bin/
非必要可執行文件 (在單用戶模式中不需要);面向所有用戶。
/usr/include/
標準包含文件
/usr/lib/
/usr/bin//usr/sbin/中二進制文件的
/usr/sbin/
非必要的系統二進制文件,例如:大量網絡服務守護進程
/usr/share/
體系結構無關(共享)數據。
/usr/src/
源代碼,例如:內核源代碼及其頭文件。
/usr/X11R6/
X Window系統 版本 11, Release 6.
/usr/local/
本地數據的第三層次, 具體到本台主機。通常而言有進一步的子目錄, 例如:bin/lib/share/.

[14]

/var/ 變量文件——在正常運行的系統中其內容不斷變化的文件,如日誌,脫機文件和臨時電子郵件文件。有時是一個單獨的分區。
/var/cache/
應用程序緩存數據。這些數據是在本地生成的一個耗時的I/O或計算結果。應用程序必須能夠再生或恢復數據。緩存的文件可以被刪除而不導致數據丟失。
/var/lib/
狀態信息。 由程序在運行時維護的持久性數據。 例如:數據庫、包裝的系統元數據等。
/var/lock/
鎖文件,一類跟蹤當前使用中資源的文件。
/var/log/
日誌文件,包含大量日誌文件,為了防止日誌占滿根分區,生產環境中一般是單獨分區。
/var/mail/
用戶的電子郵箱
/var/run/
自最後一次啟動以來運行中的系統的信息,例如:當前登錄的用戶和運行中的守護進程、一些守護進程的pid文件、socket文件。現已經被/run代替[15]
/var/spool/
等待處理的任務的脫機文件例如:打印隊列和未讀的郵件。
/var/spool/mail/
用戶的郵箱(不鼓勵的存儲位置)
/var/tmp/
在系統重啟過程中可以保留的臨時文件。
/run/ 代替/var/run目錄。

參考文獻

  1. ^ FilesystemHierarchyStandard - Debian Wiki. wiki.debian.org. [2016-07-06]. (原始內容存檔於2021-02-24). 
  2. ^ FHS 3.0 Released. June 3, 2015 [2018-06-29]. (原始內容存檔於2016-05-31). 
  3. ^ Red Hat reference guide on file system structure頁面存檔備份,存於網際網路檔案館
  4. ^ SuSE Linux Enterprise Server Administration, Novell authorized courseware, by Jason W. Eckert, Novell; Course Technology, 2006; ISBN 1418837318, 9781418837310
  5. ^ Debian policy on FHS compliance頁面存檔備份,存於網際網路檔案館
  6. ^ Ubuntu file system tree overview頁面存檔備份,存於網際網路檔案館
  7. ^ SunOS 4.1.3 manual page for filesystem(7)頁面存檔備份,存於網際網路檔案館), dated 10 January 1988 (from the FreeBSD Man Pages library)
  8. ^ 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.
  9. ^ J. DeFelicc. E.0. Preliminary Release of UNIX Implementation Document (PDF). 1972-03-17: 8 [2011-03-20]. IMO.1-1. (原始內容 (PDF)存檔於2011-07-19).  |issue=被忽略 (幫助)
  10. ^ 存档副本. [2011-03-20]. (原始內容存檔於2019-11-22). 
  11. ^ 存档副本. [2020-10-11]. (原始內容存檔於2015-09-19). 
  12. ^ 存档副本. [2011-03-20]. (原始內容存檔於2019-11-22). 
  13. ^ Should be shareable and read-only, cf. http://www.pathname.com/fhs/pub/fhs-2.3.html頁面存檔備份,存於網際網路檔案館).
  14. ^ 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).
  15. ^ Introducing /run-What's this /run directory doing on my system and where does it come from?頁面存檔備份,存於網際網路檔案館)March 30, 2011 by corbe

外部連結