Linux FHS 标准核心目录详解
FHS(Filesystem Hierarchy Standard,文件系统层次结构标准)是 Linux 发行版统一遵循的目录架构规范,核心目的是标准化系统文件的存放位置,让程序和用户可预测地定位文件。以下是你指定的 7 个核心目录的完整说明,包含核心定位、存放内容、关键特性、生产环境注意事项,同时补充现代 Linux 系统的适配变化。
一、核心系统二进制目录(单用户模式必备)
/bin
- 核心定位:所有用户可用的、单用户 / 救援模式必须的核心二进制命令目录
- 存放内容 :系统启动、修复、基础操作必备的通用命令,例如
ls、cp、mv、rm、cat、bash、sh、mkdir等 - 关键特性 :
- 无需挂载
/usr分区即可访问,是系统最小化运行的核心依赖 - 所有用户(普通用户 + root)均默认拥有执行权限
- 现代 Linux(CentOS 7+/Ubuntu 16+/Debian 9+)已普遍将
/bin软链接到/usr/bin,遵循 FHS 3.0 的 /usr 合并规范,兼容传统使用习惯
- 无需挂载
/sbin
- 核心定位:仅限 root 用户使用的、系统管理专属核心二进制工具目录
- 存放内容 :系统启动、修复、磁盘管理、网络配置、权限管控等管理员专属命令,例如
fdisk、mkfs、ip、reboot、shutdown、iptables、ifconfig等 - 关键特性 :
- 单用户模式下必须可用,用于系统故障修复与初始化
- 普通用户默认无执行权限,仅 root / 具备 sudo 权限的用户可执行
- 现代系统普遍软链接到
/usr/sbin,与 /usr 目录完成合并
二、系统配置核心目录
/etc
- 核心定位:系统全局静态配置文件目录,是 Linux 系统的 "配置中枢"
- 核心存放内容 :
- 系统核心配置:
/etc/passwd(用户信息)、/etc/shadow(密码哈希)、/etc/fstab(磁盘挂载表)、/etc/hosts(主机名映射)、/etc/profile(全局环境变量)、/etc/systemd/(系统服务管理) - 服务 / 软件配置:
/etc/ssh/sshd_config、/etc/nginx/nginx.conf、/etc/sysconfig/(RHEL/CentOS 系)、/etc/default/(Debian/Ubuntu 系)
- 系统核心配置:
- 关键特性 :
- FHS 强制要求:仅存放静态配置文件,禁止存放二进制可执行文件
- 绝大多数为文本文件,可直接编辑修改,配置默认对本机全局生效
- 生产环境建议定期备份该目录,是系统故障恢复的核心配置源
三、动态可变数据目录
/var
- 核心定位:可变数据目录,存放系统运行过程中持续产生、动态变化的文件
- 核心存放内容 :
- 日志文件:
/var/log/(系统日志、服务日志,如messages、secure、内核日志、应用日志) - 运行时数据:
/var/run/(进程 PID 文件,现代系统软链接到/run)、/var/lock/(文件锁) - 持久化状态数据:
/var/lib/(数据库、Docker 镜像、软件运行状态数据) - 缓存与队列:
/var/cache/(yum/apt 软件包缓存)、/var/spool/(邮件、定时任务队列)
- 日志文件:
- 关键特性 :
- 与
/etc的静态配置完全区分,/var内容随系统运行持续写入、修改、增长 - 生产环境必须单独分区,避免日志、业务数据占满根分区导致系统崩溃
- 不可存放程序运行必须的静态二进制文件,重启后不会丢失核心持久化数据
- 与
四、系统软件资源核心目录
/usr
-
核心定位:全称 Unix Software Resource,Unix 系统软件资源目录,是 Linux 系统最大的目录之一,存放用户级程序、库、文档等只读资源
-
FHS 标准核心子目录 :
表格
子目录 核心用途 /usr/bin 普通用户使用的非核心二进制命令(绝大多数包管理器安装的软件命令) /usr/sbin 管理员使用的非核心系统管理工具 /usr/lib /usr/lib64 系统函数库、内核模块,分别对应 32 位 / 64 位架构 /usr/include C/C++ 程序开发头文件 /usr/share 架构无关的共享数据(man 手册、文档、图标、本地化语言包) /usr/local 管理员手动编译安装的软件,不会被系统包管理器覆盖,子目录结构与 /usr 完全对齐 -
关键特性 :
- 历史上为用户家目录,现已演变为系统全局软件资源核心,默认具备只读属性(仅
/usr/local、/usr/tmp可写) - 现代系统已完成 **/usr 合并 **,根目录的
/bin、/sbin、/lib均软链接到/usr下对应目录,单用户模式下必须保证/usr分区可正常挂载 - 核心区分:包管理器安装的软件默认写入
/usr,手动编译安装的软件必须放入/usr/local,避免版本冲突和包管理器覆盖
- 历史上为用户家目录,现已演变为系统全局软件资源核心,默认具备只读属性(仅
五、内核态伪文件系统(内存驻留,无磁盘占用)
/proc
- 核心定位:进程与内核运行时状态伪文件系统(procfs),完全驻留在内存中,不占用磁盘空间,是用户空间与内核交互的传统接口
- 核心存放内容 :
- 进程专属信息:以数字命名的目录,对应进程 PID,例如
/proc/1/是 systemd/init 进程的完整信息,包含cmdline、status、fd、maps等 - 内核全局状态:
/proc/cpuinfo(CPU 详情)、/proc/meminfo(内存详情)、/proc/version(内核版本)、/proc/net/(网络栈信息)、/proc/sys/(内核可调参数,对应 sysctl)
- 进程专属信息:以数字命名的目录,对应进程 PID,例如
- 关键特性 :
- 所有文件均为内核实时动态生成,重启后全部重置,无持久化存储
- 核心面向进程管理、内核运行时状态查询,是 top、ps、free 等命令的核心数据源
- 可通过修改
/proc/sys/下的文件临时调整内核参数,永久生效需修改/etc/sysctl.conf
/sys
- 核心定位 :系统设备与驱动伪文件系统(sysfs),Linux 2.6 内核引入,完全驻留内存,用于替代
/proc中混乱的设备相关接口,是现代 Linux 设备管理的核心 - 核心存放内容 :按层级化结构组织硬件设备、驱动、总线、内核模块的完整信息,核心子目录:
/sys/devices:所有硬件设备的完整层级树,是 sysfs 的核心/sys/bus:按总线类型分类的设备(PCI、USB、SATA 等)/sys/class:按设备功能分类(网卡、磁盘、输入设备、显卡等)/sys/module:已加载的内核模块信息/sys/dev:设备号(主设备号 / 次设备号)映射
- 关键特性 :
- 内存驻留、实时生成,重启后全部重置,无磁盘占用
- 核心面向硬件设备、驱动、内核子系统的管理与信息查询,结构规范、层级清晰,是 udev、systemd 等设备管理工具的核心依赖
- 与
/proc的核心区别:/sys是结构化的硬件 / 驱动管理接口,/proc是传统的进程 / 内核状态接口,两者功能互补,现代 Linux 优先使用/sys管理硬件设备