{T}

Linux 下的各个目录有什么作用

0. 引言

登录一台陌生 Linux 服务器,如何快速熟悉它?答案藏在目录结构里:配置文件在 /etc,第三方软件在 /opt,日志在 /var/log——目录规范是全球 Linux 开发者共同的语言。而目录结构背后,是 Linux 最精彩的架构设计之一:虚拟文件系统(VFS)。它让"目录"可以指向磁盘、内存、网络甚至设备,也让"一切皆文件"成为可能。本章从 VFS 出发,讲透分区与挂载,再逐个解析核心目录的作用。

学习文件系统的意义不止于 Linux 本身:MySQL 的 binlog、Redis 的 AOF 都借鉴了日志文件系统设计,B-Tree 加速磁盘访问的思想同样适用于索引设计。


1. 虚拟文件系统(VFS):一切皆文件

Linux 所有文件和目录都建立在 VFS 之上。当你用标准文件 API 访问一个"文件"时,它背后可能是磁盘、内存、网络或某个设备:

图表渲染中…
  • 不同的目录可以是不同的文件系统/ 用 ext4、/proc 用 proc、/tmp 用 tmpfs;
  • 大量操作被抽象为对文件的操作,程序书写统一、扩展性强;
  • 接入新设备 = 接入新文件系统,无需改动上层应用。

2. 分区与挂载

2.1 查看分区归属:df

bash
df -h        # 查看各挂载点的磁盘使用
df -T        # 额外显示文件系统类型

示例输出显示 / 挂载在 /dev/sda5 上,文件系统类型为 ext4(一种常用的日志文件系统)。

2.2 查看物理磁盘:fdisk

bash
fdisk -l

可以看到磁盘与分区结构:/dev/sda1/dev/sda2/dev/sda5 是同一块磁盘上的多个分区。1~4 结尾的是主分区(最多 4 个,用于系统启动),4 以上是逻辑分区——sda2 是主分区,sda5 是它之下的逻辑分区。

2.3 挂载的本质

挂载(Mount)就是把一个文件系统映射到某个目录。文件系统可以是分区、U 盘、读卡器,甚至是内存模拟的磁盘:

bash
mount -l          # 查看所有已挂载文件系统
mount /dev/sda6 /abc   # 将 /dev/sda6 挂载到 /abc

常见特殊文件系统:

文件系统作用
sysfs通过文件访问和设置设备驱动信息
proc虚拟文件系统,通过文件访问内核进程信息
devtmpfs在内存中创建设备文件节点
tmpfs用内存模拟磁盘文件
ext4常规磁盘文件系统,管理磁盘文件

3. 核心目录详解

![Linux 目录结构总览](/os-images/30-Linux 下的各个目录有什么作用__Ciqc1F_jAhGADnWLAAFf1qd349k816.png)

目录作用关键子项/示例
/bin所有用户可访问的基础可执行文件lscpcd
/sbin系统启动必需或管理员专用指令系统初始化命令
/dev设备文件节点(devtmpfs,内存映射)/dev/null 销毁输出、/dev/zero 产生 0、/dev/random 随机数
/etc程序配置文件("and so on")/etc/passwd 用户信息、/etc/mysql/
/proc运行中进程与内核信息/proc/1122/ 进程信息、/proc/cpuinfo
/tmp临时文件(tmpfs 内存盘)重启即清空,禁放重要数据
/var运行时可变数据/var/log 日志、缓存、登录记录
/boot内核文件与启动镜像位于磁盘头部,启动时加载
/home普通用户家目录/home/lagou,登录后默认工作目录
/rootroot 用户家目录刻意避开 /home/root,防止误操作
/usrUnix System Resource 系统资源/usr/bin/usr/sbin/usr/lib.so 动态库)、/usr/share/man 文档

3.1 三个虚拟设备小抄

  • /dev/null:销毁一切输出的"黑洞",command > /dev/null 丢弃输出;
  • /dev/zero:无限产生 0 的虚拟设备,常用于填充文件;
  • /dev/random:产生随机数的虚拟设备,无限读取得到随机序列。

4. 其他常用目录

目录作用实践建议
/optOptional Software,第三方软件自装软件优先放这里
/media自动挂载的设备(U 盘等)新版本 Linux 自动挂载于此
/mnt手动挂载的临时设备手动 mount 的默认落点
/srv服务数据(网站资源等)团队习惯不一,有的用 /www/data

两个常见反模式:把程序装到 /home、把数据放到 /root——不致命,但会给同事带来困扰。遵循通用规范,登录任何一台服务器都能快速就位。


5. 小结

  • VFS 是根:不同目录可以是不同文件系统(磁盘/内存/网络/设备),"一切皆文件"由此而来;
  • 分区→挂载→目录fdisk -l 看盘、df -h 看归属、mount 建立映射;
  • 快速熟悉服务器的路线/etc 看配置、/opt 看自装软件、/var/log 看日志、/usr 看资源;
  • 思考题:socket 文件都存放在哪里?(提示:socket 是一种特殊的文件类型,多为进程间通信所用,常见的存放位置与 /tmp/var/run 有关。)

下一章讲解 Linux 的 IO 模式,理解阻塞、非阻塞与多路复用——这是网络编程与高并发服务的基础。