跳转到内容

UNIX/目录层级

维基教科书,自由的教学读本

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

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

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

结构

[编辑]

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

/bin

[编辑]

需要在单用户模式可用的必要命令(可执行文件);面向所有用户,例如: cat、 ls、 cp。

/boot

[编辑]

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

/dev

[编辑]

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

/etc

[编辑]

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

关于这个名称目前有争议。在贝尔实验室关于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]

/lib/

[编辑]

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

/media/

[编辑]

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

/mnt/

[编辑]

临时挂载的文件系统。

/opt/

[编辑]

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

/proc/

[编辑]

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

/root/

[编辑]

超级用户的家目录。

/sbin/

[编辑]

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

/srv/

[编辑]

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

/tmp/

[编辑]

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

/usr/

[编辑]

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

/usr/bin/

[编辑]

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

/usr/include/

[编辑]

标准包含文件。

/usr/lib/

[编辑]

/usr/bin/和/usr/sbin/中二进制文件的库。

/usr/sbin/

[编辑]

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

/usr/share/

[编辑]

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

  • ./软件(-版本):这个程序的共享数据。以下是示例:
  • ./fonts:X11 字体。
  • ./info:texinfo 的文档目录。
  • ./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/

[编辑]

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

/var/cache/

[编辑]

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

/var/lib/

[编辑]

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

/var/lock/

[编辑]

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

/var/log/

[编辑]

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

/var/mail/

[编辑]

用户的电子邮箱。

/var/run/

[编辑]

已经被/run代替。[5]。

/var/spool/

[编辑]

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

/var/spool/mail/

[编辑]

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

/var/tmp/

[编辑]

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

/run

[编辑]

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

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

/sys

[编辑]

在 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