linux目录结构核心是三点:一切皆文件、一棵树、按功能组织;硬件进程配置均抽象为文件,所有路径源于根/,目录按用途而非来源划分。

Linux目录结构不是随便排的,核心就三点:一切皆文件、一棵树、按功能组织。理解这三点,比死记每个目录在哪有用得多。
一切皆文件:硬件、进程、配置,全当文件看
Linux把所有东西都抽象成文件——硬盘是/dev/sda,CPU信息在/proc/cpuinfo,某个进程的状态存在/proc/1234里。你用cat、ls甚至echo就能读写它们。这不是模拟,是真实系统调用(read/write)统一接口的结果。
- 设备不挂载=没门没窗,/dev只是“设备入口列表”,真正访问要靠挂载点(比如把u盘挂到/media/usb)
- /proc和/sys是内存映射的虚拟文件系统,不占磁盘空间,改了立刻生效(如禁ping:echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all)
一棵树:所有路径都从根(/)出发
windows是C:、D:、E:多棵树;Linux只有/这一棵倒挂的大树。哪怕你插了三块硬盘、两个U盘、一个光盘,它们最终都作为子目录“长”进这棵树里(比如/mnt/disk2、/media/cdrom)。用户完全不用关心物理位置,只认逻辑路径。
- 根目录/通常单独分区,里面放/bin、/etc、/sbin这些启动必需项
- /usr、/var、/home可以分到不同磁盘或分区,系统照常运行——这是Linux灵活挂载能力的体现
按功能组织:不看谁装的,只看用来干啥
目录划分依据是“用途”,不是“谁放的”。比如命令放在哪,取决于它面向谁、什么时候用:
- /bin和/sbin:系统刚启动时就必须能用的基础命令(ls、init、fdisk),所以必须在根分区
- /usr/bin和/usr/sbin:日常用户和管理员用的常规程序(gcc、nginx、useradd),可单独分区
- /usr/local/bin:你自己编译安装的软件,和系统自带的隔开,升级系统时不被覆盖
- /etc:纯配置,全是文本,改完服务一般要重载(systemctl reload nginx)
- /var/log、/var/lib/mysql:内容随时变,适合放在有空间余量、支持日志轮转的分区
几个关键目录一眼定位
记不住全部?先盯住这五个“高频路口”:
- /etc → 所有配置的总开关(用户、网络、服务)
- /var → 日志、数据库、缓存、邮件——系统“呼吸”产生的数据全在这
- /home → 普通用户自己的地盘(~就指这里)
- /boot → 内核(vmlinuz)、引导程序(grub)、启动镜像(initramfs)——动它前先备份
- /tmp和/run → 临时文件:前者重启清空,后者存PID、socket等运行时状态
基本上就这些。不用强背,遇到新目录查man hier或ls -l /看软链接指向,逻辑自然就串起来了。