Linux文件系统层次标准(FHS)
Linux 文件系统层次标准(Filesystem Hierarchy Standard,简称 FHS)是一个由 Linux 社区制定的标准,用于规范 Linux 系统中的文件和目录结构。它旨在提高系统的兼容性和一致性,使开发者和用户能够更容易理解和管理文件系统。
1. FHS 的目标
- 确保软件的可移植性:开发者可以依赖标准化的目录结构。
- 便于系统管理和维护:用户和管理员知道文件应该存放在哪里。
- 支持不同类型的文件:区分静态文件、可变文件、共享文件和非共享文件。
2. 主要目录结构
FHS 定义了 Linux 系统中的根目录(/
)及其下主要子目录的作用。以下是常见的目录及其用途:
- /: 根目录,所有文件和目录的起点。
- /bin: 存放系统基本命令的可执行文件(如
ls
、cp
),供所有用户使用。 - /sbin: 存放系统管理命令(如
reboot
、fdisk
),通常由系统管理员使用。 - /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
)。