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/
编辑体系结构无关(共享)数据。常见子目录/子目录名:
./软件(-版本)
:这个程序的共享数据。以下是示例:
./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/
编辑/var/spool/
编辑等待处理的任务的脱机文件,例如打印队列和未读的邮件。
/var/spool/mail/
编辑用户的邮箱(不鼓励的存储位置)
/var/tmp/
编辑在系统重启过程中可以保留的临时文件。
/run
编辑自最后一次启动以来运行中的系统的信息,例如当前登录的用户和运行中的守护进程。常见的子目录:
- 由某个用户的桌面环境创建:
<用户名>
:
media/
:类似/media
,但是基本上是这个用户独占的。
/sys
编辑在 Linux 中作为 sysfs 出现。这个文件系统不仅可以把设备(devices)和驱动程序(drivers) 的信息从内核输出到 用户空间,也可以用来对设备和驱动程序做设置。(w:sysfs)
参
编辑- ↑ 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.
- ↑ 在较老的 UNIX 中作为 /Users 存在。
- ↑ 在较老的 UNIX 中作为 /Library 存在。
- ↑ 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