文件系统层次结构标准

文件系统层次结构标准英語:FHS)定义了Linux操作系统中的主要目录及目录内容。[1]FHS由Linux基金会维护。 目前版本為3.0版,於2015年發布。[2]

文件系统层次结构标准
开发者Linux基金会
首次发布1994年2月14日1994-02-14
最新版本
3.0
2015年6月3日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. . wiki.debian.org. [2016-07-06]. (原始内容存档于2021-02-24).
  2. . 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. . (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

外部链接

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.