【Linux】Linux 系统的目录结构详解
Linux 文件系统采用树状层级结构,一切皆文件(目录、设备、管道、socket 等也以文件形式存在),所有内容都从根目录 / 开始展开。这种结构遵循 Filesystem Hierarchy Standard(FHS) 标准,目前最新维护版本为 3.0(2015 年发布,2025 年由 FreeDesktop 重新发布并维护)。
FHS 的核心目标是:统一不同发行版目录布局,让管理员、开发者、脚本更容易理解和移植。
1. 根目录 /(最重要)
- 整个文件系统的起点
- 包含系统启动和单用户模式修复所需的最小文件集
- 通常挂载在最主要的磁盘分区
2. 主要目录一览表(FHS 标准分类)
| 目录 | 是否可共享 | 是否必须在根分区 | 主要用途 | 是否经常变化 | 典型内容举例 |
|---|---|---|---|---|---|
/ | — | 是 | 整个文件系统根 | — | — |
| /bin | 是 | 是 | 所有用户必备的基本命令(单用户模式可用) | 否 | ls, cp, mv, cat, mkdir, bash, grep 等 |
| /boot | 否 | 通常是 | 启动相关静态文件(内核、initramfs、grub 配置) | 很少 | vmlinuz, initrd.img, grub.cfg |
| /dev | 否 | 是 | 设备文件(字符/块设备、虚拟设备) | 动态 | /dev/sda, /dev/null, /dev/zero, /dev/tty |
| /etc | 否 | 是 | 主机特定系统配置文件 | 频繁 | passwd, fstab, hostname, nginx.conf 等 |
| /home | 是 | 否 | 用户个人主目录(可选) | 频繁 | /home/user/.bashrc, Documents 等 |
| /lib | 是 | 是 | 系统启动和 /bin、/sbin 命令所需的共享库和内核模块 | 否 | libc.so, ld-linux.so, 内核模块 |
| /lib64 | 是 | 否 | 64 位系统专用共享库(可选) | 否 | — |
| /media | 是 | 否 | 临时挂载可移动介质(U盘、光盘、手机) | 动态 | /media/usb, /media/cdrom |
| /mnt | 是 | 否 | 临时挂载文件系统(传统用法) | 动态 | 管理员手动 mount 的地方 |
| /opt | 是 | 否 | 第三方大型软件包安装位置(非发行版自带) | 很少 | /opt/google/chrome, /opt/android-sdk |
| /proc | 否 | 是 | 进程信息、内核参数、虚拟文件系统(内存文件系统) | 动态 | /proc/cpuinfo, /proc/meminfo, /proc/[pid] |
| /root | 否 | 是 | root 用户的主目录 | 频繁 | root 的 .bashrc、.ssh 等 |
| /run | 否 | 是 | 运行时临时数据(重启清空) | 频繁 | /run/sshd.pid, /run/user/1000 |
| /sbin | 是 | 是 | 系统管理命令(通常只有 root 可用) | 否 | fdisk, fsck, reboot, ifconfig, mkfs 等 |
| /srv | 是 | 否 | 系统提供的服务数据(如 www、ftp、svn 站点数据) | 频繁 | /srv/www, /srv/ftp |
| /sys | 否 | 是 | 内核设备树、硬件信息(sysfs,内存文件系统) | 动态 | /sys/class/net, /sys/devices |
| /tmp | 是 | 否 | 临时文件(很多系统重启清空或使用 tmpfs) | 频繁 | 编译临时文件、下载缓存等 |
| /usr | 是 | 否 | 用户程序、只读数据、共享库(可共享、可挂载为只读) | 很少 | /usr/bin, /usr/lib, /usr/share 等 |
| /var | 否 | 否 | 变量数据(经常变化的,如日志、缓存、邮件、数据库) | 非常频繁 | /var/log, /var/cache, /var/spool, /var/lib |
3. 重点目录深度详解(最常接触的)
- /bin vs /usr/bin vs /usr/local/bin
/bin:系统启动和单用户模式必须的命令/usr/bin:普通用户命令(大部分软件安装在这里)/usr/local/bin:管理员自己编译/安装的程序(优先级最高)- /sbin vs /usr/sbin vs /usr/local/sbin
同理,系统管理命令的分层 - /etc
最常修改的目录,几乎所有服务配置文件都在这里
常见子目录:/etc/systemd,/etc/nginx,/etc/ssh,/etc/cron.d,/etc/profile.d - /var
所有“会增长”的数据 /var/log:系统日志(最重要!)/var/cache:包管理缓存(如 apt、yum、dnf)/var/spool:打印队列、邮件队列/var/lib:状态数据(如 systemd、docker、mysql)- /usr(现代 Linux 非常重要)
按功能细分: /usr/bin:普通命令/usr/sbin:系统命令/usr/lib:库文件/usr/share:架构无关数据(文档、图标、字体、时区、man 页)/usr/local:本地安装软件(自己编译的)- /proc 和 /sys(虚拟文件系统)
不占磁盘空间,实时反映内核和硬件状态
常用查看:cat /proc/cpuinfo,cat /proc/meminfo,ls /sys/class/net - /run(现代 Linux 重要)
取代了部分老的/var/run内容
重启自动清空,常用 tmpfs 挂载(内存)
4. 快速记忆口诀(生产环境常用)
- bin → 基本命令(binaries)
- boot → 开机(bootloader + kernel)
- dev → 设备(devices)
- etc → 配置(etc = et cetera,配置都在这)
- home → 用户家目录
- lib → 库(libraries)
- proc → 进程信息(process)
- root → root 用户家
- run → 运行时数据
- sbin → 系统命令(system binaries)
- tmp → 临时(temporary)
- usr → 用户程序(unix system resources)
- var → 变量数据(variable)
5. 常用查看命令
# 查看整个目录树结构(推荐安装 tree 命令)
tree -L 2 /
# 查看目录占用大小
du -sh /* | sort -hr
# 查看挂载点
df -h
mount | column -t
# 查看当前目录结构
tree -L 3
现代 Linux 发行版(Ubuntu、CentOS、Debian、Arch 等)基本都严格遵循 FHS,但有些发行版会增加少量自定义目录(如 /snap、/flatpak)。
如果你想深入某个目录的实际使用场景(比如 /etc 下最常用的配置文件、/var/log 怎么排查问题、/proc 的高级用法等),可以告诉我,我可以继续展开讲解。