linux目录结构遵循FHS规范,核心是“按用途分功能、按生命周期分归属”;/bin和/usr/bin区分启动必备与常用命令,/etc集中配置,/var存放动态日志与服务数据,/home为用户空间。

Linux目录结构不是随意设计的,它遵循FHS(Filesystem Hierarchy Standard)规范,核心逻辑是“按用途分功能、按生命周期分归属”。理解它不靠死记硬背,而要结合真实操作场景——比如装软件、查日志、配服务、排故障,每个动作都落在具体目录里。下面用高频实战切入,帮你快速建立直觉。
/bin 与 /usr/bin:哪些命令开机就能用?
系统刚启动时,/bin 下放的是最基础的可执行文件(如 ls、cp、bash),这些是系统自举和单用户模式下必须存在的。而 /usr/bin 是“非必要但常用”的命令集合(如 git、python3、curl),它们依赖完整根文件系统挂载后才可用。
- 遇到“command not found”但系统能进,先看是不是误删了 /usr/bin ——/bin 里的命令大概率还在
- 自己编译安装软件,默认路径常是 /usr/local/bin,它优先级高于 /usr/bin(由 PATH 决定),适合放自定义或新版工具
- 容器镜像里常精简 /usr,只留 /bin + /sbin,就是为最小化启动依赖
/etc:配置的“中央办公室”
/etc 不存数据,只管“怎么运行”。所有服务、网络、用户、权限相关的配置文件都集中在这里,名字基本见名知义:
- /etc/hosts:本地域名映射,调试 DNS 或屏蔽广告时直接改它
- /etc/fstab:开机自动挂载哪些磁盘,格式错会导致系统卡在启动界面
- /etc/systemd/system/:放自定义 service 文件,比如写个 myapp.service 后 systemctl daemon-reload && systemctl enable myapp
- 修改前习惯性 cp xxx xxx.bak,很多线上事故源于没备份就 vim /etc/passwd
/var:服务产生的“活数据”存放地
/var 是唯一被设计为内容持续变化的顶级目录,重点看这几个子目录:
- /var/log:所有服务日志默认落点,nginx 记在 /var/log/nginx/,ssh 登录记录在 /var/log/auth.log(ubuntu)或 /var/log/secure(centos)
- /var/www:apache/Nginx 默认网站根目录,静态文件、php 脚本通常放这儿(注意权限:web 进程一般以 www-data 或 nginx 用户运行)
- /var/lib:数据库、docker、apt 等程序自己管理的数据区,比如 mysql 的 data 目录、Docker 的镜像存储都在 /var/lib/docker
- 磁盘告警?du -sh /var/log/* | sort -hr | head -5 快速定位最大日志源
/home 与 /root:谁在用这个系统?
/home/用户名 是普通用户的“私人空间”,桌面环境、下载、文档、.config 配置都默认建在这儿;/root 是 root 用户的家目录,和 /home 分开是为了安全隔离——即使 /home 单独挂载或损坏,root 仍可登录排障。
- 新用户创建时,useradd -m username 才会自动建 /home/username 并复制 /etc/skel 下的默认配置(如 .bashrc)
- 不要把重要项目代码直接放 /home,尤其多用户环境;建议用 /srv 或独立挂载点,避免用户删库跑路影响他人
- 重装系统想保留个人设置?备份 /home/username/.ssh、/.vimrc、/.bashrc 等隐藏文件即可
基本上就这些。记住三个锚点:/bin 和 /etc 是系统呼吸的器官,/var 是它每天产出的代谢物,/home 是它服务的人留下的痕迹。动手配一次 Nginx、查一次 auth.log、清一次 /var/log/journal,比背十遍目录树都管用。