在Linux世界中,CentOS因其稳定性、可靠性和企业级的特性而备受青睐,它的文件系统结构遵循Linux文件系统层次结构标准(FHS),这是一个规范了目录和文件存放位置的约定,旨在让用户和程序能够预测到重要文件的位置,理解这些目录的用途,是有效管理和维护CentOS系统的基石,本文将详细介绍CentOS中最重要的核心目录,帮助您构建清晰的系统认知。

核心系统目录
这部分目录包含了系统启动、运行和基本操作所必需的文件,是整个系统的骨架。
-
(根目录)
这是整个文件系统层次的起点,所有目录和文件都位于根目录之下,在Linux中,一切皆从根开始。
-
/bin (Binaries)
- 存放所有用户(包括系统管理员和普通用户)都可以使用的基本二进制可执行文件命令,这些命令是系统正常运行和修复所必需的,
ls(列出目录内容)、cp(复制文件)、mv(移动/重命名文件)、cat(查看文件内容)等,即使在单用户模式或网络未挂载的情况下,/bin中的命令也必须是可用的。
- 存放所有用户(包括系统管理员和普通用户)都可以使用的基本二进制可执行文件命令,这些命令是系统正常运行和修复所必需的,
-
/sbin (System Binaries)
- 存放系统管理员使用的系统管理和维护的二进制可执行文件,与
/bin类似,这里的命令对于系统启动和修复至关重要,但通常只为root用户或有权限的管理员设计。fdisk(磁盘分区)、reboot(重启系统)、ifconfig(网络接口配置)等。
- 存放系统管理员使用的系统管理和维护的二进制可执行文件,与
-
/boot
- 包含系统启动时所需的所有文件,这里是系统引导加载程序(如GRUB)的配置文件、Linux内核(
vmlinuz)以及初始内存盘(initrd.img或initramfs)的所在地,这个目录的内容非常关键,误删或修改可能导致系统无法启动。
- 包含系统启动时所需的所有文件,这里是系统引导加载程序(如GRUB)的配置文件、Linux内核(
-
/dev (Devices)
- 在Linux中,“一切皆文件”的理念在这里得到充分体现。
/dev目录包含代表系统硬件设备的特殊文件。/dev/sda代表第一块SCSI硬盘,/dev/tty1代表第一个终端,/dev/null是一个特殊的“黑洞”设备,所有写入其中的数据都会被丢弃。
- 在Linux中,“一切皆文件”的理念在这里得到充分体现。
-
/etc (Etcetera)
- 这是系统的“配置中心”,存放了所有系统和应用程序的配置文件,从用户账户信息(
/etc/passwd)、密码信息(/etc/shadow)、文件系统挂载表(/etc/fstab)到网络配置(/etc/sysconfig/)和各种服务的配置文件(如/etc/ssh/sshd_config),都在这个目录下,修改配置是系统管理员的日常工作之一。
- 这是系统的“配置中心”,存放了所有系统和应用程序的配置文件,从用户账户信息(
用户与数据目录
这部分目录主要与用户个人数据、临时文件和运行时信息相关。
-
/home
- 普通用户的个人主目录的默认位置,系统中每个创建的用户都会在这里拥有一个以其用户名命名的子目录,用于存放个人文件、文档、下载内容以及应用程序的配置文件,用户
alice的主目录就是/home/alice。
- 普通用户的个人主目录的默认位置,系统中每个创建的用户都会在这里拥有一个以其用户名命名的子目录,用于存放个人文件、文档、下载内容以及应用程序的配置文件,用户
-
/root

- 这是系统管理员(root用户)的主目录,它是一个独立的目录,不在
/home下,以确保即使/home分区未被挂载,root用户也能登录和工作。
- 这是系统管理员(root用户)的主目录,它是一个独立的目录,不在
-
/tmp (Temporary)
供系统和用户存放临时文件的目录,该目录下的文件可能会在系统重启时被自动清理,因此不应存放任何重要数据,许多程序在运行时会使用此目录来存储临时数据。
程序与库文件目录
这部分目录用于存放应用程序、共享库和相关的数据文件。
-
/lib (Libraries)
- 存放
/bin和/sbin中核心命令所需的共享库文件,这些库是系统启动和运行基本程序所必需的。
- 存放
-
/lib64
- 在64位系统中,这个目录用于存放64位版本的共享库,与
/lib存放的32位库(如果系统支持)相区分。
- 在64位系统中,这个目录用于存放64位版本的共享库,与
-
/usr (Unix System Resources)
- 这是最大、最重要的目录之一,包含了所有用户安装的程序、库文件和文档,它本身也是一个层次结构:
/usr/bin:非必需的用户命令,绝大多数应用程序的可执行文件都安装在这里。/usr/sbin:非必需的系统管理命令。/usr/lib:/usr/bin和/usr/sbin中程序所需的共享库。/usr/local:用于存放用户自行编译安装的软件,它同样有bin,sbin,lib,etc等子目录。/usr/share:存放架构独立的数据,如文档、手册页、图标、字体等。
- 这是最大、最重要的目录之一,包含了所有用户安装的程序、库文件和文档,它本身也是一个层次结构:
-
/opt (Optional)
- 用于安装可选的、第三方软件包,大型或商业软件会自成一体系地安装在这里,
/opt/google/chrome,这种方式将软件的所有文件都集中在一个子目录中,便于管理和卸载。
- 用于安装可选的、第三方软件包,大型或商业软件会自成一体系地安装在这里,
系统信息与动态数据目录
这部分目录包含了系统的动态信息、可变数据和挂载点。
-
/proc (Process)
- 一个虚拟文件系统,它并不存在于硬盘上,而是内核和进程信息的一个映射,通过查看
/proc下的文件,可以获取系统的实时状态,如CPU信息 (/proc/cpuinfo)、内存信息 (/proc/meminfo) 以及正在运行的进程信息 (/proc/[pid]/)。
- 一个虚拟文件系统,它并不存在于硬盘上,而是内核和进程信息的一个映射,通过查看
-
/sys (System)
- 另一个虚拟文件系统,用于与内核进行交互,特别是管理设备和驱动程序,它比
/proc更加结构化,是现代Linux内核管理硬件的主要接口。
- 另一个虚拟文件系统,用于与内核进行交互,特别是管理设备和驱动程序,它比
-
/var (Variable)

- 存放经常变化的文件,如日志文件、缓存、队列等,这个目录的内容会随着系统的运行而不断增长。
/var/log:系统和服务日志文件的核心存放地,如/var/log/messages(系统日志) 和/var/log/secure(安全日志)。/var/www或/var/www/html:Web服务器的默认文档根目录。/var/spool:存放等待处理的任务队列,如打印队列、邮件队列等。/var/lib:存放应用程序状态信息的数据文件。
- 存放经常变化的文件,如日志文件、缓存、队列等,这个目录的内容会随着系统的运行而不断增长。
-
/media 和 /mnt (Mount)
/media是自动挂载可移动设备(如U盘、CD-ROM)的标准位置。/mnt是临时挂载文件系统的传统挂载点,系统管理员可以临时将任何设备或文件系统挂载到这里。
-
/srv (Service)
- 用于存放服务提供的数据,如果你运行一个FTP服务器,你可以将FTP的根目录放在
/srv/ftp,它与/var的区别在于,/srv通常用于服务的“静态”数据,而/var用于服务运行时产生的“动态”数据(如日志)。
- 用于存放服务提供的数据,如果你运行一个FTP服务器,你可以将FTP的根目录放在
目录功能小编总结表
为了更直观地理解,下表小编总结了主要目录的功能:
| 目录 | 主要用途 | 示例文件/子目录 |
|---|---|---|
| 根目录,所有文件和目录的起点 | /bin, /etc, /home | |
| /bin | 存放所有用户的基本命令 | ls, cp, mv, cat |
| /sbin | 存放系统管理员的基本命令 | fdisk, reboot, ifconfig |
| /boot | 系统启动相关文件 | vmlinuz, initramfs, grub |
| /dev | 设备文件 | /dev/sda, /dev/null, /dev/tty |
| /etc | 系统和应用程序的配置文件 | /etc/passwd, /etc/fstab, /etc/ssh/sshd_config |
| /home | 普通用户的个人主目录 | /home/alice, /home/bob |
| /root | root用户的个人主目录 | |
| /tmp | 临时文件 | |
| /lib | 核心命令所需的共享库 | ld-linux.so.2, libc.so.6 |
| /usr | 用户安装的程序和文件 | /usr/bin, /usr/sbin, /usr/local, /usr/share |
| /opt | 可选的第三方软件包 | /opt/google/chrome |
| /proc | 内核和进程信息的虚拟文件系统 | /proc/cpuinfo, /proc/meminfo |
| /var | 经常变化的文件(日志、缓存等) | /var/log, /var/www, /var/spool |
| /media | 自动挂载的可移动设备 | /media/usb_flash |
| /mnt | 临时挂载点 | /mnt/cdrom, /mnt/data_partition |
| /srv | 服务提供的数据 | /srv/ftp, /srv/www |
相关问答FAQs
问题1:/bin、/sbin、/usr/bin、/usr/sbin 这四个目录有什么区别?
解答: 这四个目录的主要区别在于其用途的“必要性”和“使用者”。
- 必要性:
/bin和/sbin:存放的是系统启动、修复和基本运行所必需的命令,在最小的单用户环境下,这两个目录也必须是可用的。/usr/bin和/usr/sbin:存放的是用户安装的、非必需的程序和命令,这些程序通常在完整的系统安装并进入多用户模式后才可用。/usr分区未挂载,这些命令就无法使用。
- 使用者:
/bin和/usr/bin:存放所有用户(普通用户和root)都可以使用的通用命令。/sbin和/usr/sbin:存放主要用于系统管理和维护的命令,通常只有root用户或有sudo权限的用户才会使用。
问题2:我下载了一个软件的压缩包,应该把它解压到哪个目录进行安装?/opt 还是 /usr/local?
解答: 这取决于软件的安装方式和结构。
- 使用
/usr/local:这是遵循Unix传统约定的做法,特别适用于通过源代码编译安装的软件,当您执行make install时,程序默认会安装到/usr/local目录下,它内部的子目录结构(如/usr/local/bin,/usr/local/lib,/usr/local/etc)会模仿主系统的/usr目录,这样做的好处是与系统自带的软件完全分离,便于管理。 - 使用
/opt:如果软件是一个自包含的、独立的文件夹,所有可执行文件、库和配置都在其内部,那么把它解压到/opt下是更好的选择,很多商业软件或IDE(如Eclipse, Google Chrome)会这样做,它们会在/opt下创建自己的子目录(如/opt/eclipse),这样整个软件就像一个“插件”一样,安装和卸载都非常简单(直接删除文件夹即可)。
对于需要“散装”到系统各个子目录的传统软件,使用 /usr/local;对于“一体化”的自包含软件,使用 /opt。