文件系统层次结构标准(FHS)(for Linux)
本篇文章为维基百科中关于FHS的译文,原文见 wiki:https://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard
ubuntu中:http://manpages.ubuntu.com/manpages/precise/en/man7/hier.7.html
由spawpaw@hotmail.com翻译,转载需注明出处 原文备份:http://blog.csdn.net/qq_29753285/article/details/69790931 本文更新地址:http://blog.csdn.net/qq_29753285/article/details/69791332 (csdn解析markdown有点问题..有点影响阅读…) 像这类解释性的文章还是建议大家看原文。
Filesystem Hierarchy Standard (FHS)由linux基金会维护, 目前(2017-4-9),FHS的最新版本为3.0,可从http://refspecs.linuxfoundation.org/FHS_3.0/fhs-3.0.pdf下载
#文件系统层次结构标准-简介 开发者 Linux基金会 初始版本 1994年2月14日 最新版本 3.0 (2015年6月3日) 网站 官网
文件系统层次结构标准 (FHS) 定义了在类Unix系统中的目录结构和目录内容。它由Linux基金会维护,最新版为2015年六月三日发布的3.0版,仅用于Linux的各类发行版中。
#目录结构 在FHS中,所有的(包括存储于不同物理/虚拟设备中的)文件和目录都存在于根目录 / 下。其中,部分目录仅当特定系统(如X Window)安装后才会存在。
下表中大部分目录都以相似的功能存在于所有的UNIX系统中。但是,以下的描述仅针对FHS,且对非Linux系统并非权威
- / 主层次结构的根&&整个文件系统的根目录
- /bin 所有用户在单用户模式中必须具备的二进制命令文件,如 cat, ls, cp.
- /boot Boot loader文件,如 kernels, initrd.
- /dev 必要的 device 文件,如 /dev/null.
- /etc 特定主机 全系统 的配置文件 一直以来,这个名字本身就有争议。在早期由Bell labs所撰写的UNIX实现文档中,/etc 被当作附加(etcetera)目录,因为历史上这个文件夹用来保存所有不属于其他地方的文件(但FHS限制/etc仅用于保存静态配置文件,不能保存二进制文件)。从早期的文档发布以来,这个文件夹的名字就被人们以不同的方式重新定义。最近的释义包括如”Editable Text Configuration” 或 “Extended Tool Chest”词源 - /etc/opt 保存在/opt/中的插件包的配置文件 - /etc/sgml 处理SGML的程序(如catalogs)的配置文件 - /etc/X11 X Window System, version 11 的配置文件 - /etc/xml 处理xml的程序(如catalogs)的配置文件
- /home 用户的个人目录,包含保存的文件和个人设置等
- /lib /bin/ 和/sbin/ 中必须的依赖库
- **/lib
** Alternate format essential libraries. Such directories are optional, but if they exist, they have some requirements. - /media 一些可以热拔插的介质(如CD-ROMs)的挂载点 (在FHS-2.3中出现).
- /mnt 临时挂载的文件系统
- /opt 可选的应用程序包
- /proc 将进程和内核信息以文件形式呈现的虚拟文件系统。在Linux中,与procfs mount(进程文件系统)对应
- /root root用户的个人目录
- /run 运行时变量数据:从本次启动到现在的系统信息。如当前登陆的用户和正在运行的守护进程
- /sbin 必备的系统可执行文件,如fsck, init, route.
- /srv 本系统提供的特定站点的数据。如web服务器提供的数据和脚本,FTP服务器提供的数据,VCS的仓库
- /sys 包含连接到本台计算机的设备信息
- /tmp 临时文件(和/var/tmp相同). 通常在重启后清空,并且受到严格的大小限制
- /usr 只读用户数据的次要层次,包含大部分(多)用户功能和应用
- /usr/bin 所有用户的非必要的二进制可执行文件(在单用户模式中不需要)
- /usr/include Standard include files.
- /usr/lib /usr/bin/ 和 /usr/sbin/ 中的二进制文件的依赖库
- **/usr/lib
** Alternate format libraries (optional). - **/usr/local** 仅针对当前主机的 本地数据的第三个层次。一般包含其他的子目录,如 bin/, lib/, share/ - **/usr/sbin** 非必须的系统二进制文件,如多种网络服务的守护进程 - **/usr/share** 结构独立(共享)的数据 - **/usr/src** 源代码,如 内核的源代码和它的头文件 - **/usr/X11R6** X Window System, Version 11, Release 6 (up to FHS-2.3, optional). - /var Variable files:各种在系统运行中,内容会不停改变的文件。如日志文件,spool files,和临时的电子邮件文件
- /var/cache 应用缓存数据。这类文件由于耗时的I/O或计算而被生成在本地。应用必须能够重新生成或转储这些文件,以保证这些数据被删除时不会造成数据丢失。(意思就是这些东西删了不会造成不良后果)
- /var/lib 状态信息。程序运行时会改变的持久化数据,如 数据库,packaging system metadata, etc.
- /var/lock Lock files. 追踪当前正在使用的资源的文件.
- /var/log Log files. 各种日志.
- /var/mail Mailbox files. 在某些发行版中,这些文件被放在已经不推荐使用的
/var/spool/mail
目录中. - /var/opt 来自保存在/opt
中的插件包的可变数据。 - /var/run Run-time variable data. 这个目录包含描述系统的自启动以来的系统信息数据 在 FHS 3.0中,/var/run
被/run
替代。系统不应该在使用/var/run
或者提供/var/run
到/run
的符号连接,防止出现兼容性倒退 - /var/spool Spool for tasks waiting to be processed, e.g., print queues and outgoing mail queue. - /var/spool/mail 不建议使用的用户邮箱位置,见/var/mail
- /var/tmp 重启时会被保存的临时数据
#FHS 约定
大多数Linux发行版遵循文件系统层次结构标准(FHS)
,并且为保持FHS约定发布了相关政策。GoboLinux 和 NixOS 提供了有意不遵循FHS约定的实现
有些基本遵循这个标准的发行版在部分方面有些违背,如
- 现代Linux发行版将
/sys
作为可以被连接到此系统的设备修改和保存的虚拟文件系统(sysfs,相当于/proc
),但是许多UNIX和类UNIX系统使用/sys
作为指向kernel source tree
的符号连接 - 许多现代UNIX系统(像FreeBSD ,通过它的端口系统)安装第三方包至
/usr/local
然而却将本应是操作系统的代码放在/usr
中 - 一些Linux发行版不再区分
/lib
与/usr/lib
,并且将lib
作为指向/usr/lib
的软连接 - 一些Linux发行版不再区分
/bin
与/usr/bin
和/sbin
与/usr/sbin
。他们将/bin
作为指向/usr/bin
的软连接, 将/sbin
作为指向/usr/sbin
的软连接
现代Linux发行版将/run
作为(遵循FHS3.0的)保存不稳定的运行时数据的临时文件系统(tmpfs)。根据FHS2.3,这类数据被保存在/var/run
,但是由于在启动时这个目录并不总是可用,会导致一些问题。所以,这些程序必须借助欺骗的方式,如使用类似 /dev/.udev
, /dev/.mdadm
, /dev/.systemd
或 /dev/.mount
等并不是用来保存这些数据的设备目录。除其他好处外,这样也会使根目录以只读方式挂载的系统更容易使用。例如,以下是Debian在2013年的Wheezy版本中作出的改变:
- /dev/.* → /run/*
- /dev/shm → /run/shm
- /dev/shm/* → /run/*
- /etc/* (writeable files) → /run/*
- /lib/init/rw → /run
- /var/lock → /run/lock
- /var/run → /run
- /tmp → /run/tmp
#历史
当FHS被以FSSTND (Filesystem Standard的缩写)被创建时,其他UNIX和类UNIX系统已经有了他们自己的标准。比较典型的例子有 自从 Version 7 Unix (in 1979)发布以来就存在的the hier(7) description of file system layout
; the SunOS filesystem(7)
和它的后继 the Solaris filesystem(5)
历史版本
|legend |Version|Release Date|Notes |:– |:–|:– |:– |旧版本|1|1994/2/14|FSSTND |旧版本|1.1|1994/10/9|FSSTND |旧版本|1.2|1995/3/28|FSSTND |旧版本|2|1997/10/26|FHS 2.0 直接继承自FSSTND 1.2 。 FSSTND更名为FHS |旧版本|2.1|2000/4/12|FHS |旧版本|2.2|2001/5/23|FHS |仍支持|2.3|2004/1/29|FHS |最新版|3|2015/5/18|FHS
#参阅
Unix directory structure Intel Binary Compatibility Standard (iBCS) hier(7)– Linux Programmer’s Manual – Overview, Conventions and Miscellanea