大家好,我是刘叨叨,一个致力于让碎片化技术系统性的运维人。
刚学Linux时,面对黑乎乎的终端和层层叠叠的目录,你是不是也发出过“灵魂三问”:
- • 我的程序装哪儿了?(
whereis 一下,结果在 /usr/bin) - • 我的配置文件在哪儿?(
find 一圈,原来在 /etc 下面) - • 我下载的包又去哪儿了?(
ls 一看,可能在 /tmp 里被系统“悄悄”清除了)
文件到处“乱跑”,就像一个没有路牌和功能区划分的混乱城市。今天,我们就来当一回“城市规划师”,彻底看懂Linux这座“城市”的布局蓝图——FHS标准。
一、为什么需要FHS?为了秩序与协作
想象一下,如果没有统一的规划,每个软件都把库文件扔在自家门口,日志倒在公共道路上,那系统会乱成什么样?
FHS,即 Filesystem Hierarchy Standard(文件系统层次结构标准),就是这个城市规划总纲。它定义了:
- • 去哪儿找:任何系统管理员都知道,配置文件通常在
/etc,日志一般在 /var/log。 - • 该放哪儿:开发者在编译安装软件时,就知道该把可执行文件放到
/usr/local/bin。 - • 保持整洁:区分静态(如程序本身)和可变数据(如日志、数据库),让备份和维护思路清晰。
遵守它,整个Linux世界就有了共同语言,协作和维护效率倍增。
二、核心分区图:一张图看懂大格局
在深入街区(目录)前,我们先俯瞰全城。为了最清晰的展示,我们用最朴素的“字符树”来描绘这座城市的骨架,保证在任何地方都能正确显示:
/
├── 【核心系统区】 (早期启动必需)
│ ├── /bin (基础命令,如 ls, cp)
│ ├── /sbin (系统管理命令,如 fdisk)
│ ├── /boot (内核与引导加载器)
│ ├── /etc ⭐ (全局配置文件中心)
│ ├── /lib (系统基础库文件)
│ └── /dev (设备文件,如磁盘、终端)
│
├── 【用户家园与运行时】
│ ├── /home ⭐ (用户私人目录,如 /home/liudaodao)
│ ├── /root (超级管理员root的家目录)
│ ├── /proc (虚拟文件系统,内核与进程信息)
│ └── /sys (虚拟文件系统,硬件设备信息)
│
├── 【可变数据区】 (经常变化)
│ ├── /var ⭐ (动态数据:日志、缓存、数据库)
│ │ ├── /var/log (系统及服务日志)
│ │ └── /var/lib (应用程序状态数据)
│ │
│ └── /tmp ⭐ (临时文件,定期清理!)
│
└── 【扩展与应用区】
├── /usr (只读的用户程序与资源,主体软件库)
│ ├── /usr/bin (绝大多数用户命令)
│ ├── /usr/sbin (绝大多数系统命令)
│ ├── /usr/lib (应用程序库)
│ ├── /usr/share (架构无关的共享数据,如文档)
│ └── /usr/local ⭐ (本地编译安装的软件)
│
└── /opt (可选的大型第三方软件,如 Oracle)
带 ⭐ 的是需要你特别关注的“地标”。这张“地图”已经勾勒出了主干道,接下来我们深入几个关键“街区”看看。
三、关键“街区”功能详解
| | |
|---|
| / | 城市中心广场 | 别塞满!根分区空间用尽可能导致系统无法启动。通常只包含下级目录,不直接放文件。 |
| /bin&/sbin | 基础工具仓。ls,cp,bash(bin)和fdisk,ifconfig(sbin)等核心命令。 | 系统最小模式(如救援环境)下仍可用的命令集。现代系统中,它们常是指向/usr下对应目录的符号链接。 |
| /boot | 系统启动舱 | 谨慎操作!误删此目录文件≈系统无法启动。更新内核时会积累旧文件,可定期清理(如使用dnf autoremove)。 |
| /etc | 系统配置中心 | 备份重地!系统个性化设置全在这里。/etc/fstab(挂载)、/etc/passwd(用户)等都是命脉文件。 |
| /home | 用户家园 | 通常独立分区,便于重装系统时不丢失个人数据。权限管理关键,确保用户间文件私密。 |
| /tmp | 公共临时缓存区 | 会定期自动清理!文件可能随时消失,勿存重要数据。清理周期由systemd-tmpfiles控制,查看设置:sudo systemctl status systemd-tmpfiles-clean.timer。 |
| /var | 动态数据区。经常变化的数据:日志、缓存、邮件、数据库文件等。 | 增长监控重点!/var/log(日志)和/var/lib/mysql(数据库)等容易膨胀,建议独立分区并设置监控告警。 |
| /usr | 用户软件资源库。只读的应用程序、库、文档等。可理解为“系统主要的软件安装目录”。 | 大部分命令(/usr/bin)和库(/usr/lib)实际在此。/usr/local是给系统管理员本地编译安装软件的,避免被系统包管理器升级覆盖。 |
| /proc与/sys | 内核与硬件“信息面板”。虚拟文件系统,提供内核、进程、硬件参数的实时接口。 | 不是普通文件!关机即消失。用于查看进程信息(/proc/pid)、调整内核参数(/proc/sys)。 |
| /opt | 第三方大型软件“园区”。某些独立的第三方商业或大型软件可能选择安装于此。 | 通常一个软件独占一个子目录(如/opt/oracle),包含其全部文件,便于整体管理或卸载。 |
四、核心思维:静态 vs 可变
理解FHS,最关键的思维就是区分 “静态” 和 “可变”:
- • 静态 (
/usr, /bin, /lib 等):像城市的基础建筑和预装设施。程序本身应安放在此,通常只读,可以安全地在多台机器间共享(如通过NFS)。 - • 可变 (
/etc, /var, /home):像城市运行中产生的记录、配置和居民物品。系统运行产生的数据放在这里,频繁读写,需要单独备份和监控。
记住这张“城市规划图”,无论进入哪台Linux服务器,你都能迅速定位、从容操作。这,就是系统思维的开始。
关注【刘叨叨趣味运维】,用有趣的方式,啃下最硬核的技术。咱们下期见!