文件系统层次标准(Filesystem Hierarchy Standard, FHS)是由 Linux 基金会维护的一套规范,用于定义 Unix-like 系统(尤其是 Linux)中目录的组织结构与用途。

所有文件和目录都位于根目录 / 之下;
即使数据存储在不同的物理设备或虚拟磁盘上,它们在逻辑上仍统一挂载到 / 下的某个路径;
某些目录(如 /srv 或 /opt)仅在安装了特定子系统(如 Web 服务、第三方软件)后才会被使用;
虽然大多数 Unix 系统采用类似结构,但本文描述严格遵循 Linux 的 FHS 规范。
核心原则:“一切皆文件” + “统一命名空间” = 所有资源通过
/树状结构访问
/ 根目录(Root)
位置:整个文件系统的起点,没有上级目录。
权限:只有 root 用户 可写;普通用户无法在此创建或修改文件。
注意:
/ ≠ /root
/root 是 root 用户的家目录,而 / 是整个系统的根节点。
/bin 基础用户命令
作用:存放所有用户(包括单用户模式)必需的可执行二进制文件。
典型命令:ls, cp, mv, grep, ping, ssh, kill, ps
特点:
系统启动早期即可使用;
与 /usr/bin 不同,/bin 中的命令是系统运行所依赖的核心工具。
/boot 启动相关文件
作用:包含系统引导所需的关键文件。
内容示例:
内核镜像:vmlinuz-5.15.0-86-generic
初始 RAM 磁盘:initrd.img-5.15.0-86-generic
引导加载器配置:/boot/grub/grub.cfg
/dev 设备文件
作用:提供硬件设备的文件接口(一切皆文件的体现)。
类型:
块设备(Block):如硬盘 /dev/sda, /dev/nvme0n1
字符设备(Character):如终端 /dev/tty1、USB 监控 /dev/usbmon0
机制:由内核动态生成(通过 udev 等服务管理)。
/etc 系统配置文件
全称:Editable Text Configuration(可编辑文本配置)
作用:存放主机级(host-specific)的全局配置。
关键文件示例:
网络 DNS:/etc/resolv.conf
用户账户:/etc/passwd, /etc/shadow
服务配置:/etc/nginx/nginx.conf, /etc/ssh/sshd_config
日志轮转:/etc/logrotate.conf
脚本:包含系统启动 / 关闭时运行的 shell 脚本(如 /etc/rc.local)
/home 普通用户目录

结构:每个非 root 用户拥有一个子目录,如 /home/anshu
用途:
存放个人文件、文档、下载内容
保存用户专属配置(如 ~/.bashrc, ~/.config/)
权限:用户只能访问自己的家目录,无法进入他人目录(除非授权)。
约定:
~符号代表当前用户目录(如cd ~等价于cd /home/username)
/lib 系统共享库
作用:存放 /bin 和 /sbin 中程序运行所需的动态链接库。
文件命名:通常为 lib*.so.* 或 ld-*.so
示例:
C 标准库:libc.so.6
动态链接器:ld-linux-x86-64.so.2
64 位系统补充:
/lib64用于 64 位库(常见于 RHEL/CentOS)
/lib32用于 32 位兼容库(较少见)
/media 可移动设备挂载点
用途:自动挂载 USB 闪存盘、CD-ROM、SD 卡等可热插拔设备。
命名惯例:
CD-ROM → /media/cdrom
U 盘 → /media/usb-drive
FHS 规定:自 FHS 2.3 起正式纳入标准。
桌面环境行为:插入 U 盘后,文件管理器通常自动挂载到
/media/用户名/设备名
/mnt 临时挂载目录
用途:供系统管理员手动挂载临时文件系统(如 NFS、外部硬盘)。
与 /media 区别:
/media:面向用户的自动挂载
/mnt:面向管理员的手动挂载
最佳实践:挂载测试或一次性操作优先使用
/mnt
/opt 第三方软件安装目录
作用:存放独立分发的商业或开源软件包(非系统默认组件)。
结构建议:
软件 A → /opt/softwareA/
软件 B → /opt/softwareB/
典型应用:Google Chrome、JetBrains IDE、Oracle JDK 等常安装于此。
/sbin 系统管理命令
作用:存放系统管理员专用的二进制工具。
典型命令:
网络:ifconfig, route, iptables
存储:fdisk, mkfs, fsck
系统控制:reboot, halt, swapon
权限:通常需 root 权限执行。
与
/bin对比:
/bin→ 所有用户日常命令
/sbin→ 仅管理员维护命令
/srv 服务数据目录
全称:Service
作用:存放本机对外提供服务的特定数据。
示例:
Web 服务 → /srv/www/ 或 /srv/httpd/
FTP 服务 → /srv/ftp/
Git 仓库 → /srv/git/
CVS 数据 → /srv/cvs/
设计思想:将服务数据与程序分离,提升可维护性。
/tmp 临时文件目录
作用:供程序和用户存放短期使用的临时文件。
生命周期:
文件可能在程序退出后被清理;
系统重启时清空(部分发行版启用 tmpfs 内存文件系统)。
权限:所有用户可读写,但通常设置粘滞位(sticky bit)防止互相删除。
/usr 用户程序与只读数据注意:
/usr不是 “user” 的缩写,而是 “Unix System Resources” 的历史遗留。
这是一个二级只读层次结构,包含绝大多数用户级应用程序和资源:
关键理解:
/binvs/usr/bin:前者是启动必需,后者是运行时可用现代 Linux(如 systemd 系统)已模糊此界限,但 FHS 仍保留区分
/proc 进程与系统信息虚拟文件系统类型:伪文件系统(pseudo-filesystem),不占用磁盘空间
作用:以内存映射方式暴露内核运行时状态
核心特性:
每个运行中的进程对应一个以 PID 命名的目录(如 /proc/1234)
提供实时系统信息(纯文本格式,可直接 cat 查看)
调试利器:运维人员常通过
/proc快速诊断系统状态。