Contents

Linux根目录结构指南

探索 Linux 的神经中枢:根目录(/)结构终极指南

对于每一位 Linux 用户来说,无论是初学者还是资深系统管理员,理解其文件系统的层级结构(Filesystem Hierarchy Standard, FHS)都是一项至关重要的基本功。这个结构定义了系统中每个目录应该存放什么样的文件,保证了软件和用户都能以一种可预测的方式找到所需的数据。

今天,我们将深入探索 Linux 的心脏——根目录 (/),详细解析其下每一个核心目录的作用、内容和重要性。

🧭 Linux 根目录结构详解

根目录 (/) 是整个文件系统的起点。下面是其主要子目录的详细说明:

目录全称/含义主要作用系统关键是否可写典型内容举例
/binbinary存放系统基本用户命令,开机和单用户模式下也能使用✅ 是❌ 一般不可写/bin/bash, /bin/ls, /bin/cp
/bootboot loader files存放启动所需文件:内核(vmlinuz)、initramfs、GRUB配置等✅ 是⚠️ 谨慎写入/boot/vmlinuz-6.8.0, /boot/grub/
/devdevice files存放设备文件,是设备的接口而非真实文件(由 udev 动态创建)✅ 是⚠️ 动态生成/dev/sda, /dev/null, /dev/tty
/etcetcetera存放系统全局配置文件和服务脚本✅ 是⚠️ 一般仅 root 可写/etc/passwd, /etc/fstab, /etc/network/
/homehome directories普通用户的家目录,每个用户一个子目录❌ 否✅ 用户可写/home/alice, /home/bob
/libshared libraries存放为 /bin/sbin 中程序提供依赖的系统基本库文件✅ 是❌ 不建议修改/lib/x86_64-linux-gnu/libc.so.6
/mediaremovable media自动挂载外部介质(U盘、DVD等)的挂载点❌ 否/media/usb, /media/cdrom
/mntmount管理员临时手动挂载文件系统的位置❌ 否/mnt/testdisk
/optoptional software用于安装第三方可选软件❌ 否/opt/google/chrome/
/procprocess information虚拟文件系统,提供内核与进程信息的实时接口✅ 是⚠️ 虚拟目录/proc/cpuinfo, /proc/1234/status
/rootroot’s home超级用户 (root) 的家目录✅ 是✅ (root)/root/.bashrc
/runruntime data存放程序运行时产生的数据(PID文件、socket等),重启后清空✅ 是/run/systemd/, /run/lock/
/sbinsystem binary存放系统管理命令,主要供 root 用户使用✅ 是❌ 不可写/sbin/ifconfig, /sbin/fsck
/snapsnap packagesUbuntu 系的 snap 应用安装目录❌ 否⚠️ 自动管理/snap/core/, /snap/firefox/
/srvservice data存放系统提供的某些服务所需的数据(如 web、ftp)❌ 否/srv/www/, /srv/ftp/
/syssysfs虚拟文件系统,用于暴露内核对象信息(如设备驱动、总线)✅ 是⚠️ 虚拟文件系统/sys/class/net/eth0/
/tmptemporary files用于存放临时文件,系统重启时可能会被清空❌ 否/tmp/tmp1234
/usrUnix System Resources存放用户层软件、共享资源和文档,是系统中最大的目录之一✅ 是⚠️ 多为只读/usr/bin, /usr/lib, /usr/share
/varvariable data存放经常变化的数据:日志、缓存、数据库、邮件等✅ 是/var/log, /var/lib, /var/cache

🧩 深入探索:/usr/var 的内部世界

/usr/var 目录由于其内容的复杂性,内部还有一套自己的层级结构。

/usr 内部结构

/usr 目录包含了系统安装的绝大多数用户应用程序和数据。可以理解为一个“次级根目录”。

  • /usr/bin: 存放大多数用户会用到的应用程序命令。
  • /usr/sbin: 存放供系统管理员使用的非必要管理命令。
  • /usr/lib: 存放应用程序所需的共享库文件。
  • /usr/local: 用于本地管理员编译和安装软件,推荐将自行安装的软件放在此处,以区别于系统包管理器安装的软件(替代 /opt 的一种方式)。
  • /usr/share: 存放不区分硬件架构的共享数据,如文档、图标、字体等。

/var 内部结构

/var 目录专门用于存储在系统运行过程中会不断变化的文件。

  • /var/log: 存放系统和各种服务的日志文件,是排查问题的首选之地。
  • /var/lib: 存放程序的状态信息,如数据库文件、包管理器的状态等。
  • /var/cache: 存放应用程序的缓存数据,以提高性能。
  • /var/run: 现代系统中通常是指向 /run 的一个符号链接,用于存放运行时数据。
  • /var/tmp: 存放比 /tmp 更需要长时间保留的临时文件,重启后不会被清空。

🧠 化繁为简:如何记忆 Linux 目录结构

面对如此多的目录,如何快速形成一个心智模型?下面是一个简单的归类总结:

  • 核心命令: /bin (用户) + /sbin (管理员) → 存放系统运行最基础的命令。
  • 软件程序: /usr → 存放所有用户安装的软件和数据。
  • 库文件: /lib + /usr/lib → 存放程序运行所需的动态链接库。
  • 系统配置: /etc → 所有服务的配置文件都在这里。
  • 可变数据: /var → 所有动态变化的数据,如日志、缓存。
  • 内核接口: /proc + /sys → 与内核交互的虚拟窗口。
  • 用户数据: /home (普通用户) + /root (超级用户) → 用户的个人文件。
  • 启动相关: /boot → Linux 内核和启动加载器。
  • 临时挂载: /mnt + /media → 临时挂载外部设备。
  • 临时文件: /tmp → “用后即焚”的临时数据。