檔案系統階層標準
檔案系統階層標準(英語:Filesystem Hierarchy Standard,FHS)定義了Linux作業系統中的主要目錄及目錄內容。[1]FHS由Linux基金會維護。 目前版本為3.0版,於2015年發佈。[2]
開發者 | Linux基金會 |
---|---|
首次發佈 | 1994年2月14日 |
最新版本 | 3.0 2015年6月3日 |
網站 | 官方網站 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系統如GoboLinux和Syllable 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/ | 需要在單用戶模式可用的必要命令(可執行檔案);面向所有用戶,例如: cat、 ls、 cp。 |
/boot/ | 引導程式檔案,例如: kernel、initrd;時常是一個單獨的分區[8] |
/dev/ | 必要裝置, 例如:/dev/null. |
/etc/ | 特定主機,系統範圍內的設定檔。
關於這個名稱目前有爭議。在貝爾實驗室關於UNIX實現文件的早期版本中,/etc 被稱為etcetera, [9] 這是由於過去此目錄中存放所有不屬於別處的所有東西(然而,FHS限制/etc只能存放靜態設定檔,不能包含二進制檔案)。 [10] 自從早期文件出版以來,目錄名稱已被以各種方式重新稱呼。最近的解釋包括逆向首字母縮略詞如:"可編輯的文字組態"(英文 "Editable Text Configuration")或"擴充工具箱"(英文 "Extended Tool Chest")。 [11] |
|
/opt/的設定檔 |
|
X Window系統(版本11)的設定檔 |
|
SGML的設定檔 |
|
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/sbin/中二進制檔案的庫。 |
|
非必要的系統二進制檔案,例如:大量網絡服務的守護行程。 |
|
體系結構無關(共用)數據。 |
|
原始碼,例如:內核原始碼及其標頭檔。 |
|
X Window系統 版本 11, Release 6. |
|
本地數據的第三層次, 具體到本台主機。通常而言有進一步的子目錄, 例如:bin/、lib/、share/. |
/var/ | 變數檔案——在正常執行的系統中其內容不斷變化的檔案,如紀錄檔,離線檔案和臨時電子郵件檔案。有時是一個單獨的分區。 |
|
應用程式快取數據。這些數據是在本地生成的一個耗時的I/O或計算結果。應用程式必須能夠再生或恢復數據。快取的檔案可以被刪除而不導致數據遺失。 |
|
狀態資訊。 由程式在執行時維護的永續性數據。 例如:資料庫、包裝的系統元數據等。 |
|
鎖檔案,一類跟蹤當前使用中資源的檔案。 |
|
紀錄檔檔案,包含大量紀錄檔檔案,為了防止紀錄檔佔滿根分區,生產環境中一般是單獨分區。 |
|
用戶的電子郵箱。 |
|
自最後一次啟動以來執行中的系統的資訊,例如:當前登入的用戶和執行中的守護行程、一些守護行程的pid檔案、socket檔案。現已經被/run代替[15]。 |
|
等待處理的任務的離線檔案,例如:列印佇列和未讀的郵件。 |
|
用戶的郵箱(不鼓勵的儲存位置) |
|
在系統重新啟動過程中可以保留的臨時檔案。 |
/run/ | 代替/var/run目錄。 |
參考文獻
- ^ FilesystemHierarchyStandard - Debian Wiki. wiki.debian.org. [2016-07-06]. (原始內容存檔於2021-02-24).
- ^ FHS 3.0 Released. June 3, 2015 [2018-06-29]. (原始內容存檔於2016-05-31).
- ^ Red Hat reference guide on file system structure (頁面存檔備份,存於互聯網檔案館)
- ^ SuSE Linux Enterprise Server Administration, Novell authorized courseware, by Jason W. Eckert, Novell; Course Technology, 2006; ISBN 1418837318, 9781418837310
- ^ Debian policy on FHS compliance (頁面存檔備份,存於互聯網檔案館)
- ^ Ubuntu file system tree overview (頁面存檔備份,存於互聯網檔案館)
- ^ SunOS 4.1.3 manual page for filesystem(7) (頁面存檔備份,存於互聯網檔案館), dated 10 January 1988 (from the FreeBSD Man Pages library)
- ^ 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.
- ^ 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=
被忽略 (幫助) - ^ 存档副本. [2011-03-20]. (原始內容存檔於2019-11-22).
- ^ 存档副本. [2020-10-11]. (原始內容存檔於2015-09-19).
- ^ 存档副本. [2011-03-20]. (原始內容存檔於2019-11-22).
- ^ Should be shareable and read-only, cf. http://www.pathname.com/fhs/pub/fhs-2.3.html (頁面存檔備份,存於互聯網檔案館).
- ^ 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).
- ^ Introducing /run-What's this /run directory doing on my system and where does it come from? (頁面存檔備份,存於互聯網檔案館)March 30, 2011 by corbe
外部連結
- Home of the Filesystem Hierarchy Standard (頁面存檔備份,存於互聯網檔案館)
- Fortune Cookies through the /proc Filesystem (頁面存檔備份,存於互聯網檔案館)
- The Dotted Standard Filename Hierarchy, yet another very different hierarchy (used in cLIeNUX)
- Filesystem Hierarchy Standard 2.3(頁面存檔備份,存於互聯網檔案館) (29 January 2004)