【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. 重点目录深度详解(最常接触的)
/binvs/usr/binvs/usr/local/bin
/bin:系统启动和单用户模式必须的命令/usr/bin:普通用户命令(大部分软件安装在这里)/usr/local/bin:管理员自己编译/安装的程序(优先级最高)
/sbinvs/usr/sbinvs/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 -L2/# 查看目录占用大小du-sh /*|sort-hr# 查看挂载点df-hmount|column-t# 查看当前目录结构tree -L3现代 Linux 发行版(Ubuntu、CentOS、Debian、Arch 等)基本都严格遵循 FHS,但有些发行版会增加少量自定义目录(如/snap、/flatpak)。
如果你想深入某个目录的实际使用场景(比如/etc下最常用的配置文件、/var/log怎么排查问题、/proc的高级用法等),可以告诉我,我可以继续展开讲解。【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. 重点目录深度详解(最常接触的)
/binvs/usr/binvs/usr/local/bin
/bin:系统启动和单用户模式必须的命令/usr/bin:普通用户命令(大部分软件安装在这里)/usr/local/bin:管理员自己编译/安装的程序(优先级最高)
/sbinvs/usr/sbinvs/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 -L2/# 查看目录占用大小du-sh /*|sort-hr# 查看挂载点df-hmount|column-t# 查看当前目录结构tree -L3现代 Linux 发行版(Ubuntu、CentOS、Debian、Arch 等)基本都严格遵循 FHS,但有些发行版会增加少量自定义目录(如/snap、/flatpak)。
如果你想深入某个目录的实际使用场景(比如/etc下最常用的配置文件、/var/log怎么排查问题、/proc的高级用法等),可以告诉我,我可以继续展开讲解。