【Linux】Linux 系统的目录结构详解

【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, 内核模块
/lib6464 位系统专用共享库(可选)
/media临时挂载可移动介质(U盘、光盘、手机)动态/media/usb, /media/cdrom
/mnt临时挂载文件系统(传统用法)动态管理员手动 mount 的地方
/opt第三方大型软件包安装位置(非发行版自带)很少/opt/google/chrome, /opt/android-sdk
/proc进程信息、内核参数、虚拟文件系统(内存文件系统)动态/proc/cpuinfo, /proc/meminfo, /proc/[pid]
/rootroot 用户的主目录频繁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 的高级用法等),可以告诉我,我可以继续展开讲解。

文章已创建 4549

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部