文件系统层次结构标准
文件系统层次结构标准(英语: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窗口系统的安装与否。
这些目录中的绝大多数都在所有的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窗口系统(版本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窗口系统 版本 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)