UNIX/目录层级

文件系统层次结构标准en:Filesystem Hierarchy Standardw:FHS)定义了Linux操作系统中的主要目录及目录内容。在大多数情况下,它是一个传统BSD文件系统层次结构的形式化与扩充。

FHS由Linux基金会维护,这是一个由主要软件或硬件供应商组成的非营利组织,例如HPRed HatIBM、和Dell。当前的版本是2.3,在2004年1月29日公布。

FHS 标准被不少流行的 UNIX 和类 UNIX 发行版所使用,使用这些系统时常常会用到这些知识。一些发行版可能不完全遵守这样的条例,也有些使用符号链接之类的形式以便自定义系统。然而,这些方式得到的文件系统结构实际上与 FHS 差别不大。以下目录结构是对 FHS UNIX 目录树的在一个现代发行版上的部署情况的叙述。

结构

编辑

根目录/ 第一层次结构的根、 整个文件系统层次结构的根目录

需要在单用户模式可用的必要命令(可执行文件);面向所有用户,例如catlscp

存引导程序文件,例如: 内核、initrd;时常是一个单独的分区[1]

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

特定主机,系统范围内的配置文件

关于这个名称目前有争议。在贝尔实验室关于UNIX实现文档的早期版本中,/etc 被称为etcetera,这是由于过去此目录中存放所有不属于别处的所有东西(然而,FHS限制/etc存放静态配置文件,不能包含二进制文件)。自从早期文档出版以来,目录名称已被以各种方式重新称呼。最近的解释包括反向缩略语如:"可编辑的文本配置"(英文 "Editable Text Configuration")或"扩展工具箱"(英文 "Extended Tool Chest")。/etc 的通常内容如下所列。

  • foo.d/ 属于 foo 程序的目录——.d 指代 directory,即目录。
  • 00-bar, 01-baz, 99-final - 利用文件名排序的特点,实现按顺序逐个读取配置文件。常见于 init, fontconfig 等需要配置文件优先级关系的程序配置中。
  • xxxrc - run commands 的缩写,指某个程序或系统启动时执行的任务。
  • opt//opt/的配置文件
  • X11/X Window系统(版本11)的配置文件
  • sgml/SGML的配置文件
  • xml/XML的配置文件

/home/

编辑

用户的家目录,包含保存的文件、个人设置等,一般为单独的分区。[2]

/bin//sbin/中二进制文件必要的文件。[3]

/media/

编辑

可移除媒体(如CD-ROM)的挂载点 (在FHS-2.3中出现)。

临时挂载的文件系统。

可选应用软件。常常以 /opt/软件名 的目录层级(前缀)出现。

/proc/

编辑

虚拟文件系统,将内核进程状态归档为文本文件。例如:uptime、 network。在Linux中,对应procfs格式挂载。

/root/

编辑

超级用户家目录

/sbin/

编辑

必要的系统二进制文件,例如: init、 ip、 mount。在一些激进的发行版中软链接/bin

站点的具体数据,由系统提供。

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

用于存储只读用户数据的第二层次前缀); 包含绝大多数的()用户工具和应用程序。是 UNIX Software Repository 的简写。在一些激进的发行版中,/ 下的不少目录软链接到此目录下的相应目录。

/usr/bin/

编辑

非必要可执行文件 (在单用户模式中不需要);面向所有用户。

/usr/include/

编辑

标准包含文件

/usr/lib/

编辑

/usr/bin//usr/sbin/中二进制文件的

/usr/sbin/

编辑

非必要的系统二进制文件,例如:大量网络服务守护进程。在一些激进的发行版中软链接/usr/bin

/usr/share/

编辑

体系结构无关(共享)数据。常见子目录/子目录名:

  • ./软件(-版本):这个程序的共享数据。以下是示例:
  • ./fonts:X11 字体。
  • ./infotexinfo 的文档目录。
  • ./man手册页
  • ./locale:多语言本地化数据。
  • ./doc:HTML、TXT 或其他格式的文档,由某一些程序安装。
  • ./zoneinfo:时区数据库。

/usr/src/

编辑

源代码,例如:内核源代码及其头文件。

/usr/X11R6/

编辑

X Window系统 版本 11, Release 6。不常使用。

/usr/local/

编辑

| 本地数据的第三层次(也是前缀), 具体到本台主机。通常而言有进一步的子目录, 例如:bin/lib/share/。布局与 /usr 类似,只不过 share/ 常被链接到 /usr/share[4]

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

/var/cache/

编辑

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

/var/lib/

编辑

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

/var/lock/

编辑

锁文件,一类跟踪当前使用中资源的文件。

/var/log/

编辑

日志文件,包含大量日志文件。

/var/mail/

编辑

用户的电子邮箱

/var/run/

编辑

已经被/run代替。[5]

/var/spool/

编辑

等待处理的任务的脱机文件,例如打印队列和未读的邮件。

/var/spool/mail/

编辑

用户的邮箱(不鼓励的存储位置)

/var/tmp/

编辑

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

自最后一次启动以来运行中的系统的信息,例如当前登录的用户和运行中的守护进程。常见的子目录:

  • 由某个用户的桌面环境创建<用户名>
  • media/:类似 /media,但是基本上是这个用户独占的。

Linux 中作为 sysfs 出现。这个文件系统不仅可以把设备(devices)和驱动程序(drivers) 的信息从内核输出到 用户空间,也可以用来对设备和驱动程序做设置。(w:sysfs)

  1. 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.
  2. 在较老的 UNIX 中作为 /Users 存在。
  3. 在较老的 UNIX 中作为 /Library 存在。
  4. 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).
  5. Introducing /run-What's this /run directory doing on my system and where does it come from?March 30, 2011 by corbe