Linux根目录结构指南
Contents
探索 Linux 的神经中枢:根目录(/)结构终极指南
对于每一位 Linux 用户来说,无论是初学者还是资深系统管理员,理解其文件系统的层级结构(Filesystem Hierarchy Standard, FHS)都是一项至关重要的基本功。这个结构定义了系统中每个目录应该存放什么样的文件,保证了软件和用户都能以一种可预测的方式找到所需的数据。
今天,我们将深入探索 Linux 的心脏——根目录 (/),详细解析其下每一个核心目录的作用、内容和重要性。
🧭 Linux 根目录结构详解
根目录 (/) 是整个文件系统的起点。下面是其主要子目录的详细说明:
| 目录 | 全称/含义 | 主要作用 | 系统关键 | 是否可写 | 典型内容举例 |
|---|---|---|---|---|---|
| /bin | binary | 存放系统基本用户命令,开机和单用户模式下也能使用 | ✅ 是 | ❌ 一般不可写 | /bin/bash, /bin/ls, /bin/cp |
| /boot | boot loader files | 存放启动所需文件:内核(vmlinuz)、initramfs、GRUB配置等 | ✅ 是 | ⚠️ 谨慎写入 | /boot/vmlinuz-6.8.0, /boot/grub/ |
| /dev | device files | 存放设备文件,是设备的接口而非真实文件(由 udev 动态创建) | ✅ 是 | ⚠️ 动态生成 | /dev/sda, /dev/null, /dev/tty |
| /etc | etcetera | 存放系统全局配置文件和服务脚本 | ✅ 是 | ⚠️ 一般仅 root 可写 | /etc/passwd, /etc/fstab, /etc/network/ |
| /home | home directories | 普通用户的家目录,每个用户一个子目录 | ❌ 否 | ✅ 用户可写 | /home/alice, /home/bob |
| /lib | shared libraries | 存放为 /bin 和 /sbin 中程序提供依赖的系统基本库文件 | ✅ 是 | ❌ 不建议修改 | /lib/x86_64-linux-gnu/libc.so.6 |
| /media | removable media | 自动挂载外部介质(U盘、DVD等)的挂载点 | ❌ 否 | ✅ | /media/usb, /media/cdrom |
| /mnt | mount | 管理员临时手动挂载文件系统的位置 | ❌ 否 | ✅ | /mnt/testdisk |
| /opt | optional software | 用于安装第三方可选软件 | ❌ 否 | ✅ | /opt/google/chrome/ |
| /proc | process information | 虚拟文件系统,提供内核与进程信息的实时接口 | ✅ 是 | ⚠️ 虚拟目录 | /proc/cpuinfo, /proc/1234/status |
| /root | root’s home | 超级用户 (root) 的家目录 | ✅ 是 | ✅ (root) | /root/.bashrc |
| /run | runtime data | 存放程序运行时产生的数据(PID文件、socket等),重启后清空 | ✅ 是 | ✅ | /run/systemd/, /run/lock/ |
| /sbin | system binary | 存放系统管理命令,主要供 root 用户使用 | ✅ 是 | ❌ 不可写 | /sbin/ifconfig, /sbin/fsck |
| /snap | snap packages | Ubuntu 系的 snap 应用安装目录 | ❌ 否 | ⚠️ 自动管理 | /snap/core/, /snap/firefox/ |
| /srv | service data | 存放系统提供的某些服务所需的数据(如 web、ftp) | ❌ 否 | ✅ | /srv/www/, /srv/ftp/ |
| /sys | sysfs | 虚拟文件系统,用于暴露内核对象信息(如设备驱动、总线) | ✅ 是 | ⚠️ 虚拟文件系统 | /sys/class/net/eth0/ |
| /tmp | temporary files | 用于存放临时文件,系统重启时可能会被清空 | ❌ 否 | ✅ | /tmp/tmp1234 |
| /usr | Unix System Resources | 存放用户层软件、共享资源和文档,是系统中最大的目录之一 | ✅ 是 | ⚠️ 多为只读 | /usr/bin, /usr/lib, /usr/share |
| /var | variable 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→ “用后即焚”的临时数据。