Linux 系统采用了一种树状的目录结构,最顶层是根目录(/)。与 Windows 系统按驱动器(如 C:、D:)划分存储空间不同,Linux 奉行“一切皆文件”的理念,所有的物理磁盘、分区、外部设备以及网络存储最终都会被挂载到这棵倒置的目录树的某个分支上。这种结构标准化为文件系统层次结构标准(FHS - Filesystem Hierarchy Standard),使得系统的组织清晰、模块化且易于管理。
以下详细介绍了 Linux 系统中最常用的 15 个核心目录及其具体作用。
/ (Root Directory) - 根目录****
Linux 文件系统的起点。所有其他的目录、文件以及设备都挂载在根目录之下。系统的最高层级,通常包含系统核心文件和主要的系统目录。普通用户通常对该目录只有读取权限,只有 root 用户才能在根目录直接写入文件。
/home - 个人用户主目录****
用于存储系统普通用户的个人数据和配置文件。每一个普通用户在该目录下都有一个与其用户名同名的子目录(例如 /home/user)。用户对自己的主目录拥有完全的读写权限,常用于存放文档、下载的内容、个人配置(如 .bashrc)等。
/root - 超级用户(管理员)主目录****
系统管理员(root 用户)专属的主目录。与普通用户的 /home 不同,root 的目录单独设立在此。这主要是为了在系统启动和维护(甚至在 /home 分区尚未挂载时)保证 root 用户的环境能够正常运作。
/bin (Binaries) - 基本用户命令二进制文件****
存放系统中最基础、最常用的可执行二进制文件(命令)。这些命令对所有用户(包括普通用户和超级用户)都是可用的。常见的命令如 ls, cp, mv, rm, cat, echo 等都存储在这里。在单用户模式下,这些命令也必须可用。
/sbin (System Binaries) - 系统管理员命令二进制文件****
存放主要供系统管理员(root)使用的系统管理程序和维护工具。普通用户可能可以查看,但通常没有权限执行,或者即使执行也无法完成修改系统配置的操作。常见命令包括 fdisk, ifconfig, iptables, reboot, halt 等。
/etc (Etcetera) - 系统级配置文件****
存储系统以及各类安装软件的全局配置文件。这里的配置影响全系统,而不是个别用户(个别用户的配置在 /home 下)。例如:网络配置、用户密码文件(/etc/passwd, /etc/shadow)、系统启动脚本、各种服务的配置文件(如 nginx.conf)等。这里一般只存放文本文件,不包含可执行文件。
/var (Variable Data) - 动态和经常变动的数据****
包含系统运行过程中经常改变的文件。主要用于存储日志文件(/var/log)、数据库数据(/var/lib/mysql)、系统缓存、邮件队列(/var/mail)、以及打印服务假脱机目录。将不断变化的数据放在这里,有助于将其与系统的只读部分(如 /usr)隔离开来。
/usr (Unix System Resources) - 用户程序与二次层级****
是系统中占用空间最大的目录之一。它包含了绝大部分普通用户的应用程序、系统实用工具和库文件。其内部结构类似于根目录,有 /usr/bin(大部分非必要用户命令)、/usr/sbin、/usr/lib。还有 /usr/local 用于存放本地安装的第三方软件源码编译生成的程序。
/boot - 引导加载程序文件****
包含系统启动时所需的核心文件。包括 Linux 内核(如 vmlinuz)、初始 RAM 磁盘镜像(initramfs)以及引导加载程序(如 GRUB)的配置文件。这个目录的内容通常在操作系统启动阶段被读取。
/dev (Devices) - 设备文件****
Linux 中“一切皆文件”,所有的硬件设备(硬盘、终端、USB设备、声卡等)在此目录下都被抽象为特殊文件。例如 /dev/sda 代表第一块 SCSI/SATA 硬盘,/dev/null 是一个可以吞噬任何写入数据的“黑洞”设备。
/tmp (Temporary) - 临时文件****
用于存放系统和应用程序运行时产生的临时文件。该目录对所有用户都有读写权限。重要的是,系统重启时,/tmp 目录下的内容通常会被自动清空。因此,绝不能将重要数据保存在此目录中。
/opt (Optional) - 可选附加应用程序包****
用于安装第三方提供的大型附加软件包,通常是那些非系统自带、独立且自带目录结构的商业或定制软件(如 Oracle 数据库、某些第三方大型 IDE)。安装在此的好处是便于管理和统一卸载。
/media 和 /mnt (Mount) - 挂载点目录****
用于挂载额外的文件系统。
- /media:主要用于自动挂载可移动介质(如 USB 闪存盘、光驱)。
- /mnt:主要供系统管理员手动挂载临时文件系统(例如挂载额外的硬盘分区或网络共享存储)。
/proc (Processes) - 虚拟文件系统(进程与内核信息)****
这是一个存在于内存中的虚拟文件系统,并不占用实际磁盘空间。它包含了当前运行的内核状态、系统资源(内存、CPU信息:/proc/cpuinfo)以及正在运行的各个进程的状态信息(每个进程对应一个以 PID 命名的数字目录)。
/lib 和 /lib64 (Libraries) - 共享核心库与内核模块****
存放 /bin 和 /sbin 中二进制文件运行所必须的基础共享库(类似于 Windows 中的 .dll 文件),以及内核模块(位于 /lib/modules 下)。对于 64 位系统,通常还会有 /lib64 目录专门存放 64 位的库文件。