刚开始使用 Linux 时,你可能会发现:Windows 通常使用 C:\\、D:\\ 这样的盘符组织文件,而 Linux 却从一个 / 开始,所有目录都挂在它下面。
这就是 Linux 文件系统的一个重要特点:采用统一的树形目录结构,以根目录 / 作为整个目录树的起点。

1. 什么是文件系统?
文件系统(File System)是操作系统用来组织、存储和管理数据的一套机制。它负责管理文件和目录,并处理文件的命名、读写、权限以及空间分配等问题。
Linux 可以使用 ext4、XFS、Btrfs 等不同文件系统。它们是具体的文件系统类型,而 /home、/etc 这些则是目录路径,不要把两者混为一谈。
2. Linux 为什么只有一个根目录?
Linux 使用统一的目录树结构,最顶层的目录叫作根目录,写作 /。
所有文件和目录都位于这棵目录树中。硬盘、分区、U 盘等存储设备上的文件系统,也需要通过挂载(Mount)接入这棵目录树中的某个目录。
例如,一块独立分区可以挂载到 /data。挂载后,访问 /data 就是在访问该分区中的文件。
因此,Linux 并不是没有磁盘分区,而是不通过 C:、D: 这样的盘符来访问它们。
3. 常见目录分别有什么作用?
| / | 根目录,整个目录树的起点 | 所有目录的顶层 |
| /bin | 基本用户命令 | ls、cp 等 |
| /sbin | 系统管理相关命令 | fsck、shutdown 等 |
| /etc | 系统和服务配置文件 | hosts、服务配置 |
| /home | 普通用户的家目录 | /home/用户名 |
| /root | root 用户的家目录 | root 的个人文件 |
| /usr | 大部分用户空间程序和只读共享数据 | /usr/bin、/usr/lib |
| /var | 经常变化的数据 | /var/log、/var/cache |
| /tmp | 临时文件 | 程序运行时的临时数据 |
| /dev | 设备文件 | /dev/null、磁盘设备 |
| /proc | 内核和进程信息的虚拟文件系统 | /proc/cpuinfo、/proc/<PID> |
| /sys | 设备和内核对象信息的虚拟文件系统 | /sys/class |
| /boot | 启动所需文件 | 内核、initramfs 等 |
| /opt | 可选的附加软件 | 部分第三方软件 |
| /mnt、/media | 常见挂载目录 | 临时挂载点、可移动介质 |
补充两个容易混淆的目录:
- /home 是普通用户的家目录集合;/root 是 root 管理员自己的家目录。
- /usr 不是用户个人文件夹,它主要存放系统软件和共享资源;个人文件通常放在 /home/用户名。
在不少现代发行版中,/bin、/sbin、/lib 可能是指向 /usr 下对应目录的符号链接,这是常见的合并 /usr 布局。
4. 为什么 Linux 说一切皆文件?
一切皆文件是 Linux/Unix 的经典设计思想。它强调系统尽可能通过统一的文件接口来访问不同类型的资源。
例如:
- 普通文件:保存文本、图片、程序等数据。
- 目录:用于组织文件和其他目录。
- 设备文件:通过 /dev 下的文件接口访问设备,例如 /dev/null。
- 虚拟文件:/proc、/sys 提供内核、进程和设备等信息,并不代表普通磁盘文件。
- 管道和套接字:也可以通过文件描述符进行读写,用于进程间通信。
例如:
# 把输出丢弃,不显示也不保存
echo "hello" > /dev/null
# 查看 CPU 信息
cat /proc/cpuinfo
# 查看内存信息
cat /proc/meminfo
这里的 /dev/null 就像一个“黑洞”,写进去的数据会被丢弃;/proc/cpuinfo 则让我们通过读取文件的方式查看 CPU 信息。
但要注意:一切皆文件是设计理念,不是说 Linux 中所有东西在底层都是真正存储在磁盘上的普通文件。
例如进程、网络连接等资源有各自的内核对象,只是其中很多可以通过文件描述符或虚拟文件接口进行访问。
5. 绝对路径和相对路径有什么区别?
Linux 中路径有两种常见写法:
- 绝对路径:从根目录 / 开始写,例如 /home/zhangjiayu/project。
- 相对路径:从当前所在目录开始写,例如 project/src。
几个常见符号:
| / | 根目录 |
| . | 当前目录 |
| .. | 上一级目录 |
| ~ | 当前用户的家目录 |
可以用下面的命令练习:
# 查看当前所在目录
pwd
# 进入根目录
cd /
# 进入 /etc 目录
cd /etc
# 返回上一级目录
cd ..
# 回到当前用户的家目录
cd ~
6. 如何查看磁盘和挂载情况?
理解目录结构后,还需要知道目录背后使用的是哪块磁盘或分区。
# 查看磁盘分区和设备
lsblk
# 查看文件系统类型、容量和挂载点
df -hT
# 查看当前挂载关系
findmnt
其中,df -hT 可以查看文件系统类型、总容量、已用空间、可用空间以及挂载点。排查服务器磁盘空间不足时,这条命令非常常用。
7. 后端开发中会用到哪些目录?
举几个常见场景:
- 部署服务时,可能把应用放在 /opt/myapp 或 /usr/local/myapp。
- 查看 Nginx 等服务的配置时,经常会接触 /etc。
- 排查 Spring Boot 或系统服务问题时,经常需要查看 /var/log 下的日志。
- 查看服务器 CPU、内存和进程信息时,可以使用 /proc。
- 检查磁盘是否空间不足时,可以使用 df -h,再结合 du -sh 目录 定位占用较大的目录。
这些目录并不是强制规定每个项目都必须这样部署,实际路径还要以发行版和团队规范为准。


