fhs标准定义linux目录结构,/usr为只读静态软件资源库,/var为可写动态数据区;关键目录如/bin、/sbin、/etc、/boot、/dev删毁将致系统无法启动。

直接看 ls / 只能列出目录名,但看不出用途;真正要理解每个目录的作用,得结合 FHS 标准、实际内容和权限行为来判断,而不是靠猜或死记。
怎么快速确认某个目录里放的到底是什么
别只用 ls 看空目录,很多目录在刚装系统时是空的(比如 /srv),但它的职责是明确的。正确做法是:
- 用
ls -l /path查看目录权限和属主,比如/root通常只有 root 可读写,/home是普通用户家目录根,/tmp有 sticky bit(drwxrwxrwt) - 用
find /path -maxdepth 1 -type f | head -5快速抽样看里面有没有典型文件,例如/etc/passwd、/var/log/syslog、/boot/vmlinuz* - 查
man hier—— 这是 Linux 官方 FHS 的本地手册,比网上碎片信息更准,且随发行版更新
哪些目录删了会导致系统无法启动
不是所有根目录都“可删”,有些一动就进不了系统。关键红线目录有:
-
/bin和/sbin:没有它们,连ls、mount、init都执行不了,单用户模式也起不来 -
/boot:丢失vmlinuz或initramfs,开机卡在 GRUB 后黑屏,报 “kernel not found” -
/dev:哪怕只是清空,系统会瞬间失去所有设备访问能力,ls都可能 hang 住 -
/etc:没它,连用户认证、网络配置、服务定义全失效,systemd启动直接 abort -
/lib和/lib64:缺关键.so库,bash自身都无法加载
/usr 和 /var 容易混淆,怎么区分
核心区别不在“谁大谁小”,而在“变与不变”:
-
/usr是只读的、共享的、静态的:所有发行版打包的程序(/usr/bin)、文档(/usr/share/man)、头文件(/usr/include)都放这儿。升级系统时它可能被覆盖,但运行中你不该往里写东西 -
/var是可写的、本地的、动态的:日志(/var/log)、数据库数据(/var/lib/mysql)、邮件队列(/var/spool/mail)、缓存(/var/cache)全归它管。它的内容每分每秒都在变 - 一个实操判断法:
stat /usr /var看Birth和Modify时间——/usr的 Modify 时间通常停在安装/升级时刻,/var则持续滚动
为什么 /mnt 和 /media 要分开
这不是历史遗留,而是人为划分使用边界:
-
/media是给桌面环境(如 GNOME、KDE)自动挂载用的,U 盘插上后系统自动建/media/usb0并挂进去,用户双击就能访问 -
/mnt是给管理员手动挂载用的,比如临时挂个 NFS 共享:mount -t nfs 192.168.1.10:/data /mnt/nfs-data,挂完就用,用完umount,不希望被桌面环境干扰 - 两者权限一样宽松(通常 755),但行为策略不同:
/media下的子目录可能被 udisks2 自动清理,/mnt下的则完全由你控制生命周期
最常被忽略的是 /run —— 它替代了老式 /var/run,但不是简单重命名。它是 tmpfs 类型,重启即空,专存 pid 文件、socket、锁,systemd 启动服务时默认把状态写这儿。如果误把它当普通目录去 rsync 或备份,会发现什么也拷不走。











