Linux 文件系统层级标准 (FHS) 完全指南:运维人员快速定位问题的必备知识
引言
作为运维工程师,你是否曾经困惑过:为什么有些程序在 /bin,有些在 /usr/bin?日志文件应该去哪里找?系统配置文件又存放在哪里?
早期的 Linux 发行版各自为政,目录结构混乱不堪,给运维人员带来了巨大的困扰。为了解决这个问题,Linux 文件系统层级标准 (Filesystem Hierarchy Standard, FHS) 应运而生。它定义了一套统一的目录结构规范,让所有的 Linux 发行版都遵循相同的组织方式。
理解 FHS 不仅能让你在 Linux 系统中游刃有余,更能在故障排查、性能调优时快速定位问题根源。本文将带你深入了解 Linux 文件系统的核心目录及其用途。
一、可执行二进制文件目录 (Binaries)
1.1 /bin - 核心系统命令
用途: 存放操作系统核心程序,必须在系统启动时即可使用,无需挂载其他文件系统。
关键特点:
- 包含系统启动和修复所需的基本命令
- 即使其他分区未挂载也能使用
- 所有用户都可以访问
常见命令:
| |
运维场景:
- 系统进入单用户模式时,只有
/bin中的命令可用 - 紧急修复场景下必须依赖这些核心命令
1.2 /usr/bin - 用户程序
用途: 存放非核心的主要用户程序和应用软件。
关键说明:
usr不是 “user” 的缩写,而是 Unix System Resources (Unix 系统资源)- 包含大部分日常使用的命令和工具
- 系统包管理器安装的程序通常在这里
常见程序:
| |
1.3 /usr/local/bin - 本地编译安装的程序
用途: 存放管理员手动从源码编译安装的程序。
为什么需要这个目录:
- 避免覆盖系统自带的同名程序
- 便于区分系统自带和手动安装的软件
- 升级系统时不会影响自定义安装的程序
典型使用场景:
| |
1.4 sbin 系列目录 - 系统管理命令
包括: /sbin, /usr/sbin, /usr/local/sbin
用途: 存放需要 root 权限的系统管理工具。
常见工具:
| |
权限说明:
| |
二、共享库文件 (Libraries)
2.1 /lib - 核心系统库
用途: 包含 /bin 和 /sbin 中二进制文件运行所必需的核心共享库。
内容:
- C 标准库 (libc)
- 动态链接器
- 内核模块
示例:
| |
2.2 /usr/lib - 用户程序库
用途: 存放非关键性用户程序的库文件。
常见库:
- Python 运行时库
- UI 库 (GTK, Qt)
- 第三方库
示例:
| |
三、配置与用户数据
3.1 /etc - 系统配置文件
用途: Linux 配置文件的大本营,控制系统和服务的所有行为。
关键配置文件:
| |
运维实战:
| |
3.2 /home - 普通用户主目录
用途: 普通用户存储个人文件、文档、项目的空间。
结构:
| |
3.3 /root - 超级管理员主目录
用途: root 用户专用的独立主目录,与普通用户隔离。
为什么独立:
- 安全隔离
- 即使
/home分区损坏,root 仍可登录 - 存放系统管理相关的脚本和工具
四、动态与运行时数据
4.1 /var - 可变数据
用途: 存放经常变化的数据。
重要子目录:
/var/log - 系统日志 (最重要!)
运维必看:
| |
故障排查实战:
| |
其他 /var 子目录
| |
4.2 /run - 运行时易失性数据
用途: 存储运行时信息,系统重启后清空。
内容:
| |
示例:
| |
五、虚拟文件系统 (高级)
5.1 /proc - 进程和内核信息
特点: 虚拟文件系统,内容存在于内存中,不占用磁盘空间。
用途: 检查操作系统状态和进程统计信息。
实用技巧:
查看 CPU 信息
| |
查看内存信息
| |
查看进程信息
| |
系统性能监控
| |
5.2 /sys - 内核和硬件对象
用途: 暴露更低级别的内核与硬件信息,用于监控和配置。
实用场景:
网络接口管理
| |
硬件温度监控
| |
块设备信息
| |
六、其他重要目录
6.1 /tmp - 临时文件
特点:
- 系统重启时清空
- 所有用户可写
- 通常挂载为 tmpfs (内存文件系统)
注意事项:
| |
6.2 /opt - 可选应用软件
用途: 第三方独立应用程序的安装目录。
示例:
| |
6.3 /boot - 启动引导文件
内容:
- 内核镜像 (vmlinuz)
- 初始化 RAM 磁盘 (initrd)
- GRUB 引导程序配置
| |
6.4 /dev - 设备文件
用途: 硬件设备的文件接口。
常见设备:
| |
七、运维实战:快速定位问题
7.1 性能问题排查
| |
7.2 服务故障排查
| |
7.3 安全审计
| |
7.4 磁盘问题排查
| |
八、总结
理解 Linux 文件系统层级标准 (FHS) 是每个运维工程师的必备技能。通过本文,你应该掌握了:
- 二进制文件目录 (
/bin,/usr/bin,/sbin): 快速找到系统命令和工具 - 配置文件目录 (
/etc): 所有服务配置的中心 - 日志目录 (
/var/log): 故障排查的第一站 - 虚拟文件系统 (
/proc,/sys): 深入了解系统运行状态 - 运行时数据 (
/var,/run): 掌握动态数据的位置
记住这个口诀:
- 配置看
/etc - 日志看
/var/log - 性能看
/proc - 硬件看
/sys - 命令在
/bin和/usr/bin
Linux 文件系统完整树形结构
下面是 Linux 文件系统的完整树形目录结构及各目录用途说明:
/(根目录)
├── bin/ # 基本用户命令(ls, cp, cat 等)
├── boot/ # 启动文件(内核、initramfs、GRUB 配置)
├── dev/ # 设备文件(硬盘、终端、USB 等)
├── etc/ # 系统配置文件
│ ├── systemd/ # systemd 服务配置
│ ├── nginx/ # Nginx 配置
│ ├── ssh/ # SSH 配置
│ └── cron.d/ # 定时任务配置
├── home/ # 普通用户家目录
│ └── username/ # 用户个人文件和配置
├── lib/ # 系统共享库文件(32位)
├── lib64/ # 系统共享库文件(64位)
├── media/ # 可移动设备挂载点(U盘、光盘)
├── mnt/ # 临时挂载点(手动挂载)
├── opt/ # 可选应用程序(第三方软件)
├── proc/ # 虚拟文件系统(进程和内核信息)
│ ├── cpuinfo # CPU 信息
│ ├── meminfo # 内存信息
│ └── [PID]/ # 进程运行时信息
├── root/ # root 用户家目录
├── run/ # 运行时数据(PID、socket)
├── sbin/ # 系统管理命令(仅root使用)
├── srv/ # 服务数据(Web、FTP 等)
├── sys/ # 虚拟文件系统(设备和驱动信息)
│ ├── block/ # 块设备信息
│ ├── class/ # 设备类别
│ └── devices/ # 物理设备树
├── tmp/ # 临时文件(重启清空)
├── usr/ # 用户程序和数据
│ ├── bin/ # 用户命令(非基本命令)
│ ├── sbin/ # 非必需的系统管理命令
│ ├── lib/ # 应用程序共享库
│ ├── local/ # 本地安装的软件
│ ├── share/ # 共享数据(文档、图标)
│ └── src/ # 源代码
└── var/ # 可变数据(日志、缓存、数据库)
├── log/ # 日志文件
│ ├── syslog # 系统日志
│ ├── auth.log # 认证日志
│ └── nginx/ # Nginx 日志
├── cache/ # 应用程序缓存
├── lib/ # 状态信息(数据库文件)
├── spool/ # 队列数据(邮件、打印任务)
├── tmp/ # 临时文件(重启保留)
└── www/ # Web 服务器数据
目录用途快速对照表:
| 目录 | 用途 | 典型文件/子目录 |
|---|---|---|
/bin | 基本命令 | ls, cat, cp, mv, rm |
/boot | 启动文件 | vmlinuz, initrd.img, grub/ |
/dev | 设备文件 | sda, tty, null, random |
/etc | 配置文件 | passwd, hosts, nginx.conf |
/home | 用户目录 | /home/kaka, /home/admin |
/lib | 共享库 | libc.so, ld-linux.so |
/proc | 进程信息 | cpuinfo, meminfo, [PID]/ |
/sys | 硬件信息 | block/, class/, devices/ |
/tmp | 临时文件 | session-, tmp- |
/usr | 用户程序 | bin/, lib/, share/, local/ |
/var | 可变数据 | log/, cache/, lib/, www/ |
掌握这些知识后,你将能够在 Linux 系统中快速定位问题,提升故障排查效率,成为更专业的运维工程师!
参考资料
- Filesystem Hierarchy Standard (FHS) 3.0
- Linux Documentation:
/usr/share/doc/ man hier- 查看文件系统层级结构的手册页