Linux目录结构遵循FHS标准,以根目录/为逻辑顶点构建树状体系;/bin、/sbin存基础命令,/usr/bin、/usr/sbin放用户及管理应用;/etc管静态配置,/var存运行时数据,/run管本次启动临时信息;/dev、/proc、/sys为内核动态生成的虚拟接口。

Linux目录结构不是随意排列的,而是遵循FHS(文件系统层次结构标准)的一套逻辑严密的组织方式。它的核心作用是让系统能稳定运行、软件可预测安装、用户与管理员各司其职、硬件资源被合理抽象——说白了,就是让整个操作系统“有章可循、各安其位”。
/ 是一切的起点,不是普通文件夹
根目录 / 不是硬盘上的一个普通目录,而是整个虚拟文件系统的逻辑顶点。所有路径都从它开始,比如 /home/user 或 /usr/bin/python。即使你挂载了多块硬盘,它们也必须“接入”到这个树状结构中的某个节点(如 /mnt/data 或 /home),否则系统看不见那些设备上的内容。
- 挂载点本质是空目录,一旦挂载,原内容被隐藏,取而代之的是被挂载设备的文件系统
- / 本身通常只放极少数关键子目录,不建议直接存放大文件或用户数据
- 系统启动时,内核首先挂载根文件系统,之后才逐步挂载其他部分
/bin、/sbin、/usr/bin、/usr/sbin 各管一段命令
命令按使用角色和系统阶段分开放置,避免混乱和权限失控:
- /bin:存放系统启动和单用户模式下必需的基础命令(如 ls、cp、bash),所有用户都能执行
- /sbin:存放仅管理员可用的系统管理命令(如 fdisk、iptables、reboot),普通用户默认无权运行
- /usr/bin:绝大多数用户级应用命令在此,比如 python、gcc、curl —— 它们不是启动必需,但日常离不开
- /usr/sbin:对应 /usr/bin 的管理类命令,如 httpd(Apache)、sshd,服务部署后常用
这种分离让最小化系统(如容器或嵌入式环境)可以精简 /bin 和 /sbin,而保持功能完整;也方便包管理器区分核心与扩展组件。
/etc、/var、/run 管理“变”与“不变”
配置和状态数据分开存放,是系统可维护性的关键设计:
- /etc:纯静态配置。所有服务、网络、用户、安全策略都集中在这里(如 /etc/passwd、/etc/nginx/nginx.conf)。修改前备份是运维基本习惯
- /var:存放运行中持续变化的数据。日志(/var/log)、数据库文件(/var/lib/mysql)、邮件队列(/var/spool/mail)都归这里。它的存在让 / 可以做成只读,提升安全性
- /run:比 /var 更临时——只在本次启动生命周期内有效。进程ID文件(/run/nginx.pid)、套接字(/run/docker.sock)、用户登录会话信息都放这儿。重启即清空,无需手动清理
/dev、/proc、/sys 是内核与用户空间的“翻译窗口”
这些不是真实磁盘目录,而是内核动态生成的接口,把硬件和运行态变成可读可操作的文件:
- /dev:把硬盘(sda)、串口(ttyS0)、内存(mem)等统统表现为文件,用 open/read/write 就能操作设备
- /proc:实时映射内存中的进程与内核状态。读 /proc/cpuinfo 看CPU型号,读 /proc/1/environ 查1号进程环境变量,top 命令底层就靠它
- /sys:专注设备驱动与内核参数控制。比如 echo 'on' > /sys/bus/usb/devices/1-1/power/level 就能唤醒USB设备,udev规则也依赖此结构
它们不需要磁盘空间,却让 shell 脚本和 C 程序能统一访问底层资源,是 Linux “一切皆文件”哲学的落地体现。










