文件系统层次结构标准

文件系统层次结构标准（Filesystem Hierarchy Standard，FHS）定义了Linux操作系统中的主要目录及目录内容。FHS由Linux基金会维护。

目前版本为3.0版，于2015年发布。

## 概述

多数Linux发行版遵从FHS标准并且声明其自身政策以维护FHS的要求。

但截至2009年，包括由自由标准小组成员参与开发的版本在内的绝大多数发行版，并不完全执行建议的标准。

当FHS建立之时，其他的UNIX和类Unix操作系统已经有了自己的标准，尤其是hier(7)文件系统布局描述。

自从第七版Unix(于1979年发布)以来已经存在，或是SunOS filesystem(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；时常是一个单独的分区

/dev/｜必要设备, 例如：:/dev/null.

/etc/｜特定主机，系统范围内的配置文件。关于这个名称目前有争议。在贝尔实验室关于UNIX实现文档的早期版本中，/etc 被称为etcetera，这是由于过去此目录中存放所有不属于别处的所有东西（然而，FHS限制/etc只能存放静态配置文件，不能包含二进制文件）。自从早期文档出版以来，目录名称已被以各种方式重新称呼。最近的解释包括逆向首字母缩略词如："可编辑的文本配置"（英文 "Editable Text Configuration"）或"扩展工具箱"（英文 "Extended Tool Chest"）。

/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/｜可选应用软件 包。

/proc/｜虚拟文件系统，将内核与进程状态归档为文本文件。例如：uptime、 network。在Linux中，对应Procfs格式挂载。

/root/｜超级用户的家目录

/sbin/｜必要的系统二进制文件，例如： init、 ip、 mount。

/srv/｜站点的具体数据，由系统提供。

/tmp/｜临时文件(参见 /var/tmp)，在系统重启时目录中文件不会被保留。

/usr/｜用于存储只读用户数据的第二层次；包含绝大多数的(多)用户工具和应用程序。

/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/.

/var/｜变量文件——在正常运行的系统中其内容不断变化的文件，如日志，脱机文件和临时电子邮件文件。有时是一个单独的分区。

/var/cache/｜应用程序缓存数据。这些数据是在本地生成的一个耗时的I/O或计算结果。应用程序必须能够再生或恢复数据。缓存的文件可以被删除而不导致数据丢失。

/var/lib/｜状态信息。由程序在运行时维护的持久性数据。例如：数据库、包装的系统元数据等。

/var/lock/｜锁文件，一类跟踪当前使用中资源的文件。

/var/log/｜日志文件，包含大量日志文件，为了防止日志占满根分区，生产环境中一般是单独分区。

/var/mail/｜用户的电子邮箱。

/var/run/｜自最后一次启动以来运行中的系统的信息，例如：当前登录的用户和运行中的守护进程、一些守护进程的pid文件、socket文件。现已经被/run代替。

/var/spool/｜等待处理的任务的脱机文件，例如：打印队列和未读的邮件。

/var/spool/mail/｜用户的邮箱(不鼓励的存储位置)

/var/tmp/｜在系统重启过程中可以保留的临时文件。

/run/｜代替/var/run目录。

## 外部链接

- 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)

## 基本资料

- 所有者：Linux基金会
- 发行日期：1994年2月14日
- 最新版本：3.0
- 最新版本：2015年6月3日
- 网站：https://wiki.linuxfoundation.org/lsb/fhs、http://www.pathname.com/fhs/