如果你刚开始接触 Linux,打开终端输入 ls /,会看到一组看起来很固定的目录:binetchomeusrvarprocdev 等。它们不是随意命名的文件夹,而是 Linux 系统长期演化出来的一套目录分工。

理解这些目录的作用,有助于你知道配置文件在哪里、日志在哪里、用户数据在哪里、程序通常安装在哪里,也能避免误删系统关键文件。本文会以 Linux 根目录 / 为起点,逐一讲解常见目录的用途。

1. /:根目录,所有路径的起点#

Linux 的文件系统是一个单一的树状结构,最顶层就是 /,也叫根目录。

无论是系统文件、用户文件、磁盘分区、U 盘、网络挂载目录,最终都会挂载到这棵目录树的某个位置。和 Windows 常见的 C:D: 盘符不同,Linux 更强调“从 / 开始的一棵树”。

例如:

/etc/ssh/sshd_config
/home/alice/document.txt
/var/log/syslog

这些路径都从 / 开始。

日常使用时,不建议直接在 / 下随意创建文件或目录。根目录通常只放系统约定好的一级目录。

2. /bin:基础命令目录#

/bin 用来存放系统启动和基本维护所需的常用命令。

常见命令包括:

ls
cp
mv
rm
cat
mkdir
sh

这些命令是系统最基础的工具,即使系统处在较小的维护环境中,也通常需要它们。

在一些现代 Linux 发行版中,/bin 可能只是一个指向 /usr/bin 的符号链接。这是因为许多发行版已经采用了 /usr 合并的目录布局,但从使用者角度看,/bin 仍然可以理解为“基础命令所在的位置”。

3. /sbin:系统管理命令目录#

/sbin 中通常存放系统管理相关命令,很多命令主要供 root 用户或系统管理员使用。

常见命令包括:

ip
reboot
shutdown
fsck
mount

其中不少命令和系统启动、磁盘检查、网络配置、关机重启有关。

/bin 类似,现代发行版中 /sbin 也可能链接到 /usr/sbin

4. /etc:系统配置文件目录#

/etc 是 Linux 中非常重要的目录,主要存放系统级配置文件。

常见内容包括:

/etc/passwd        # 用户账户信息
/etc/group         # 用户组信息
/etc/hostname      # 主机名
/etc/hosts         # 本地域名解析
/etc/fstab         # 文件系统挂载配置
/etc/ssh/          # SSH 服务配置
/etc/nginx/        # Nginx 配置,取决于是否安装

很多服务的配置文件都在 /etc 下。例如你安装了 Nginx、MySQL、Redis、SSH 服务,通常都能在 /etc 下找到相关配置。

需要注意的是,修改 /etc 下的文件往往会影响整个系统或某个服务的运行。修改前最好备份,例如:

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

5. /home:普通用户的家目录#

/home 用来存放普通用户的个人文件和用户级配置。

例如用户 alice 的家目录通常是:

/home/alice

用户自己的文档、下载、项目代码、图片、桌面文件等一般都放在这里。很多程序也会把用户级配置写到家目录下的隐藏文件或隐藏目录中,例如:

/home/alice/.bashrc
/home/alice/.ssh/
/home/alice/.config/

以点 . 开头的文件或目录默认是隐藏的,可以用下面的命令查看:

ls -la ~

其中 ~ 表示当前用户的家目录。

6. /root:root 用户的家目录#

/root 是超级用户 root 的家目录,不是普通用户目录。

这点容易和 / 根目录混淆:

  • / 是整个系统的根目录。
  • /root 是 root 用户的个人目录。

普通用户的家目录通常在 /home/用户名,而 root 用户比较特殊,家目录直接放在 /root

通常不建议长期使用 root 用户进行日常操作。更推荐使用普通用户登录,在需要管理员权限时通过 sudo 执行特权命令。

7. /usr:用户级程序和共享资源目录#

/usr 是 Linux 中体积通常很大的目录之一,里面存放大量应用程序、库文件、文档和共享资源。

常见子目录包括:

/usr/bin       # 大多数普通应用命令
/usr/sbin      # 管理类命令
/usr/lib       # 程序库文件
/usr/share     # 共享数据,如文档、图标、语言文件
/usr/local     # 本地手动安装的软件

很多通过包管理器安装的软件,其可执行文件会进入 /usr/bin,库文件进入 /usr/lib,文档或资源进入 /usr/share

/usr/local 的作用#

/usr/local 通常用于存放本机管理员手动安装的软件,区别于发行版包管理器安装的软件。

例如你从源码编译安装某个程序,可能会安装到:

/usr/local/bin
/usr/local/lib
/usr/local/etc

这样做的好处是减少和系统包管理器管理的文件发生冲突。

8. /var:经常变化的数据目录#

/var 的名字来自 variable,意思是“可变的”。它用于存放运行过程中会不断变化的数据。

常见内容包括:

/var/log       # 日志文件
/var/cache     # 缓存文件
/var/tmp       # 临时文件
/var/spool     # 队列数据,如邮件、打印任务
/var/lib       # 服务运行状态和数据

其中 /var/log 非常常用。排查系统问题或服务异常时,经常会查看日志,例如:

/var/log/syslog
/var/log/auth.log
/var/log/nginx/access.log
/var/log/nginx/error.log

不同发行版日志文件名称可能不同。例如 Debian、Ubuntu 常见 syslog,而一些使用 systemd 的系统会更多使用 journalctl 查看日志。

/var/lib 也很重要。许多服务会把自己的持久化数据放在这里,例如数据库、容器、包管理器状态等。不要把 /var/lib 简单理解成“缓存”,它里面可能有非常关键的数据。

9. /tmp:临时文件目录#

/tmp 用来存放临时文件,系统和应用程序都可能在这里创建短期使用的数据。

特点是:

  • 通常任何用户都可以写入。
  • 文件不保证长期保存。
  • 有些系统会在重启后清理 /tmp

因此,不要把重要文件长期放在 /tmp。如果只是临时解压、临时测试、短时间中转文件,放在这里比较合适。

还有一个类似目录是 /var/tmp。一般来说,/var/tmp 中的临时文件保存时间可能比 /tmp 更长,但具体清理策略取决于发行版和系统配置。

10. /dev:设备文件目录#

Linux 有一个经典理念:一切皆文件。硬盘、分区、终端、随机数生成器等设备,都可以通过文件形式暴露在 /dev 下。

常见示例:

/dev/sda        # 一块磁盘,名称视系统而定
/dev/sda1       # 磁盘上的一个分区
/dev/null       # 丢弃所有写入内容的特殊设备
/dev/zero       # 持续输出 0 字节的设备
/dev/random     # 随机数设备
/dev/tty        # 当前终端设备

例如把输出重定向到 /dev/null,表示丢弃输出:

command > /dev/null 2>&1

普通用户不应该随意修改 /dev 下的内容。很多设备文件由内核和 udev 等机制动态管理。

11. /proc:进程和内核信息的虚拟文件系统#

/proc 并不是普通磁盘目录,而是一个虚拟文件系统。它由内核动态生成,用来暴露进程、内核和系统运行状态信息。

常见内容包括:

/proc/cpuinfo       # CPU 信息
/proc/meminfo       # 内存信息
/proc/version       # 内核版本信息
/proc/1/            # PID 为 1 的进程信息
/proc/self/         # 当前进程信息

例如查看 CPU 信息:

cat /proc/cpuinfo

查看内存信息:

cat /proc/meminfo

/proc 下很多文件看起来像普通文件,但它们不是实际存储在硬盘上的文本文件,而是读取时由内核即时生成的内容。

12. /sys:设备和内核对象信息#

/sys 也是虚拟文件系统,主要用于展示和管理内核设备模型、硬件设备、驱动、总线、电源等信息。

常见路径包括:

/sys/class
/sys/devices
/sys/block
/sys/bus

很多系统工具会读取 /sys 中的信息来识别硬件和设备状态。某些文件还可以写入,用于调整内核或设备行为。

不过,普通用户不建议随意修改 /sys 下的文件,因为这可能直接影响硬件和内核运行状态。

13. /run:运行时状态目录#

/run 用来存放系统启动后产生的运行时数据,通常位于内存文件系统中,重启后会消失。

它常用于存放:

/run/*.pid       # 进程 PID 文件
/run/lock        # 锁文件
/run/user/UID    # 用户会话运行时目录

很多服务启动后,会在 /run 下记录自己的进程 ID、套接字文件或临时状态。

/run 的特点是“只对当前这次启动有效”。如果机器重启,里面的内容通常会重新生成。

14. /boot:启动相关文件目录#

/boot 存放系统启动所需文件,例如内核镜像、initramfs、bootloader 配置等。

常见内容包括:

/boot/vmlinuz-...
/boot/initrd.img-...
/boot/grub/

如果 /boot 空间满了,系统可能无法安装新内核,甚至影响启动配置更新。服务器维护中经常会检查旧内核是否过多占用了 /boot 空间。

不要随意删除 /boot 下的文件,尤其是当前正在使用的内核文件。需要清理旧内核时,应优先使用发行版提供的包管理工具。

15. /lib/lib64:基础共享库目录#

/lib/lib64 存放系统启动和基础命令运行所需的共享库文件。

共享库可以理解为程序运行时依赖的公共组件,类似 Windows 中的 DLL 文件。

例如,/bin/ls 这样的命令运行时也需要加载一些动态库。可以用 ldd 查看某个程序依赖哪些库:

ldd /bin/ls

在现代发行版中,/lib/lib64 也可能被链接到 /usr/lib/usr/lib64

普通用户一般不需要手动操作这些目录。误删库文件可能导致大量命令无法运行。

16. /opt:第三方大型软件目录#

/opt 通常用于安装可选的、第三方的、相对独立的软件包。

例如某些商业软件、独立发行的软件、开发工具套件,可能会安装到:

/opt/google/
/opt/idea/
/opt/company-app/

它和 /usr/local 有些相似,都可能用于非系统默认软件。但 /opt 更常见于“一个软件一个独立目录”的安装方式。

17. /mnt:临时挂载点目录#

/mnt 通常用作临时挂载文件系统的位置。

例如临时挂载一块磁盘分区:

sudo mount /dev/sdb1 /mnt

然后就可以通过 /mnt 访问这个分区中的内容。

如果只是临时维护、救援系统、手动挂载磁盘,/mnt 很常见。

18. /media:可移动设备挂载目录#

/media 通常用于自动挂载可移动设备,例如 U 盘、移动硬盘、光盘等。

桌面版 Linux 插入 U 盘后,系统可能会自动挂载到类似路径:

/media/alice/USB_DISK

它和 /mnt 的区别可以粗略理解为:

  • /mnt 更偏向管理员手动临时挂载。
  • /media 更偏向系统自动挂载可移动介质。

实际行为会因发行版和桌面环境而不同。

19. /srv:服务数据目录#

/srv 用于存放系统对外提供服务的数据。srv 可以理解为 service 的缩写。

例如:

/srv/www
/srv/ftp
/srv/git

如果一台服务器主要用于提供网站、FTP、Git 仓库等服务,把服务数据放在 /srv 是一种比较清晰的组织方式。

不过实际生产环境中,也有很多团队会把网站放在 /var/www,或者把业务数据放在单独的数据盘目录中。关键是保持团队内约定一致,并做好权限和备份规划。

20. /lost+found:文件系统修复目录#

在 ext 系列文件系统中,每个分区的根目录下可能会有一个 lost+found 目录。

当文件系统检查工具修复磁盘错误时,可能会把无法确定原位置的文件片段放到这里。

普通使用中很少需要进入这个目录。如果你看到它,不必惊讶,它是文件系统维护机制的一部分。

21. 常见目录如何快速记忆#

可以用下面这种方式建立直觉:

/        整个系统的起点
/bin     基础命令
/sbin    系统管理命令
/etc     系统配置
/home    普通用户数据
/root    root 用户家目录
/usr     大量应用程序和共享资源
/var     日志、缓存、状态等可变数据
/tmp     临时文件
/dev     设备文件
/proc    进程和内核信息,虚拟文件系统
/sys     设备和内核对象信息,虚拟文件系统
/run     本次启动后的运行时状态
/boot    启动文件和内核
/lib     基础共享库
/opt     第三方独立软件
/mnt     手动临时挂载点
/media   可移动设备挂载点
/srv     服务数据

22. 新手最常见的几个误区#

误区一:把 / 当成普通文件夹乱放东西#

根目录是系统目录树的顶层,不适合随意存放个人文件。个人文件应放在自己的家目录,例如 /home/用户名

误区二:以为 /root 就是根目录#

/root 是 root 用户的家目录,根目录是 /。两者不是一回事。

误区三:随意删除 /var 下的内容#

/var/log 中是日志,部分旧日志可以按策略清理;但 /var/lib 中常常有服务的重要数据,不能随便删除。

误区四:觉得 /proc/sys 是普通文件#

它们大多是虚拟文件系统,由内核动态提供信息。很多内容不占用普通磁盘空间,也不应该随意修改。

误区五:手动改系统目录但不备份#

修改 /etc/boot/lib 等目录下的内容前,应先确认影响范围,并保留备份。服务器环境中还应配合版本管理、配置管理或快照策略。

23. 排查问题时常用哪些目录#

如果系统或服务出现问题,可以优先想到这些位置:

服务配置:/etc
服务日志:/var/log
服务数据:/var/lib 或 /srv
用户配置:/home/用户名/.*
启动相关:/boot
设备状态:/dev、/sys
进程状态:/proc
临时文件:/tmp、/run

例如 SSH 登录异常,可以查看:

/etc/ssh/sshd_config
/var/log/auth.log

例如 Nginx 网站异常,可以查看:

/etc/nginx/
/var/log/nginx/
/var/www/ 或 /srv/www/

例如磁盘空间不足,可以检查:

du -sh /var/log/*
du -sh /var/lib/*
du -sh /home/*

执行清理前,一定要先确认文件用途,尤其是生产服务器。

总结#

Linux 的目录结构看起来复杂,但背后有清晰的分工:配置放 /etc,用户文件放 /home,日志和可变数据放 /var,程序和共享资源大量集中在 /usr,设备在 /dev,内核和进程信息通过 /proc/sys 暴露。

掌握这些目录的作用,能够帮助你更快理解 Linux 系统的运行方式,也能在安装软件、修改配置、排查日志、挂载磁盘和维护服务器时少走很多弯路。

对于新手来说,最重要的原则是:先弄清楚目录用途,再修改或删除文件;涉及系统目录时先备份;个人数据尽量放在自己的家目录中。这样使用 Linux 会更加稳妥,也更容易建立系统化的理解。