Linux文件系统层次标准(FHS)

Linux 文件系统层次标准(Filesystem Hierarchy Standard,简称 FHS)是一个由 Linux 社区制定的标准,用于规范 Linux 系统中的文件和目录结构。它旨在提高系统的兼容性和一致性,使开发者和用户能够更容易理解和管理文件系统。


1. FHS 的目标

  • 确保软件的可移植性:开发者可以依赖标准化的目录结构
  • 便于系统管理和维护:用户和管理员知道文件应该存放在哪里。
  • 支持不同类型的文件:区分静态文件、可变文件、共享文件和非共享文件。

2. 主要目录结构

FHS 定义了 Linux 系统中的根目录(/)及其下主要子目录的作用。以下是常见的目录及其用途:

  • /: 根目录,所有文件和目录的起点。
  • /bin: 存放系统基本命令的可执行文件(如 lscp),供所有用户使用。
  • /sbin: 存放系统管理命令(如 rebootfdisk),通常由系统管理员使用。
  • /etc: 存放系统配置文件(如网络配置、用户账户信息)。
  • /home: 用户的主目录,通常每个用户在此有自己的子目录(如 /home/user1)。
  • /root: 超级用户(root)的主目录。
  • /lib: 存放系统库文件,支持 /bin/sbin 中的程序运行。
  • /usr: 存放用户程序和数据,通常是只读的,包含次级层次结构:
    • /usr/bin: 用户可执行文件。
    • /usr/sbin: 非必要系统管理命令。
    • /usr/lib: 用户程序的库文件。
    • /usr/share: 架构无关的共享数据(如文档、图标)。
  • /var: 存放可变数据,如日志(/var/log)、邮件(/var/mail)、临时文件等。
  • /tmp: 存放临时文件,系统重启时可能被清空。
  • /boot: 存放系统启动相关文件,如内核和引导加载程序(grub)。
  • /dev: 存放设备文件(如 /dev/sda 表示硬盘)。
  • /proc: 虚拟文件系统,反映系统运行时的信息(如 /proc/cpuinfo)。
  • /sys: 类似 /proc,用于与内核交互,管理硬件信息。
  • /mnt: 临时挂载点,用于挂载外部设备(如 U 盘)。
  • /media: 可移动设备的挂载点(如光盘、USB)。
  • /opt: 存放可选的第三方软件。

3. 文件分类

FHS 将文件分为以下几类,并据此分配到不同目录:

  • 共享文件: 可被多个系统或用户共享(如 /usr 中的内容)。
  • 非共享文件: 特定于本地系统(如 /etc 中的配置文件)。
  • 静态文件: 不常变化的文件(如二进制文件、库文件)。
  • 可变文件: 运行时会变化的文件(如日志、缓存)。

4. 版本与发展

  • FHS 由 Filesystem Hierarchy Standard Group 维护。
  • 当前最新版本是 FHS 3.0(2015 年发布),适用于大多数现代 Linux 发行版,如 Ubuntu、Fedora 和 Debian。

5. 实际应用

在实际使用中,FHS 为用户和开发者提供了一个清晰的蓝图。例如:

  • 安装软件时,标准化的目录结构让用户知道二进制文件可能在 /usr/bin,配置文件可能在 /etc
  • 排查问题时,管理员可以快速定位日志文件(/var/log)或设备信息(/dev)。