当前位置:首页>Linux>Linux 系统目录结构详解:/bin、/sbin、/usr 到底放什么?

Linux 系统目录结构详解:/bin、/sbin、/usr 到底放什么?

  • 2026-10-03 17:36:16
Linux 系统目录结构详解:/bin、/sbin、/usr 到底放什么?
cd /etc、vi /var/log/messages、rm -rf /(千万别执行!),这些目录你天天进,但 /bin 和 /usr/bin 有什么区别?/proc 里的文件为什么大小都是0?本文带你彻底搞懂 Linux 目录设计的底层逻辑。

一、Linux 目录设计哲学

Linux 遵循 FHS(Filesystem Hierarchy Standard) 标准,核心思想:

原则
说明
一切皆文件
硬件、进程、配置都是文件
分层存储
系统文件、用户文件、动态数据分离
挂载点设计
不同目录可挂载不同磁盘,灵活扩展

二、根目录结构总览

/                    # 根目录├── bin              # 基础命令(单用户模式可用)├── sbin             # 系统管理命令├── boot             # 启动文件├── dev              # 设备文件├── etc              # 配置文件├── home             # 用户家目录├── lib              # 基础库文件├── lib64            # 64位库文件├── media            # 可移动设备挂载点├── mnt              # 临时挂载点├── opt              # 可选第三方软件├── proc             # 进程信息(虚拟文件系统)├── root             # root 用户家目录├── run              # 运行时变量数据├── srv              # 服务数据├── sys              # 系统信息(虚拟文件系统)├── tmp              # 临时文件├── usr              # 用户程序├── var              # 可变数据└── ...

三、核心目录详解

1. /bin — 基础二进制命令

$ ls /bincat  chmod  cp  date  echo  grep  kill  ln  ls  mkdir  mv  ps  rm  sh  tar  touch
特点
说明
全称
binaries(二进制可执行文件)
存放内容
最基础的系统命令
关键要求
单用户模式(救援模式)下可用
对比 /usr/bin
/bin 是系统启动必需的,/usr/bin 是普通用户命令

为什么分开?

历史原因:早期系统 /usr 可单独挂载,如果挂载失败,系统仍能用 /bin 里的基础命令启动和修复。

2. /sbin — 系统管理命令

$ ls /sbinfdisk  fsck  ifconfig  init  ip  mkfs  reboot  route  shutdown  tune2fs
特点
说明
全称
system binaries
存放内容
系统管理、维护命令
使用权限
通常需要 root
对比 /usr/sbin
同 /bin vs /usr/bin 的关系

3. /usr — Unix System Resources(不是"用户"!)

$ ls /usrbin  lib  lib64  local  sbin  share  src
子目录
存放内容
/usr/bin
普通用户命令(如 git、vim、python)
/usr/sbin
非关键的系统管理命令(如 nginx、sshd)
/usr/lib
程序库文件
/usr/local手动编译安装的软件
(避免与系统包冲突)
/usr/share
共享数据(文档、图标、时区文件)
/usr/src
源代码

关键区分:

安装方式
默认路径
系统包管理器(yum/apt)
/usr/bin
、/usr/lib
手动编译安装
/usr/local/bin
、/usr/local/lib

4. /etc — 配置文件

$ ls /etcpasswd  shadow  fstab  hosts  nginx/  ssh/  systemd/  yum.repos.d/
特点
说明
全称
et cetera(等等)或 editable text configuration
存放内容
系统-wide 的配置文件
重要文件
passwd
、fstab、hosts、ssh/sshd_config

配置管理原则:

  • 程序默认读取 /etc/ 下的配置

  • 用户级配置覆盖系统级(如 ~/.bashrc 覆盖 /etc/bashrc)

5. /var — 可变数据(Variable)

$ ls /varlog  spool  mail  cache  lib  tmp  www
子目录
存放内容
/var/log系统日志
(messages、secure、nginx/)
/var/spool
队列数据(邮件、打印任务、cron)
/var/mail
用户邮箱
/var/cache
应用缓存
/var/lib
应用状态数据(如 mysql 数据文件)
/var/tmp
重启后保留的临时文件(对比 /tmp)

为什么和 /usr 分开?

/usr 通常是只读挂载(系统更新时),/var 是可写的动态数据,分离后系统升级更安全。

6. /tmp 和 /var/tmp — 临时文件

目录
特点
/tmp
任何用户可写,重启后清空(tmpfs 挂载到内存)
/var/tmp
重启后保留,用于跨重启的临时数据

安全注意:

# /tmp 通常有 sticky 位(1777),防止用户删除他人文件ls -ld /tmpdrwxrwxrwt 10 root root 4096 Jul  6 10:00 /tmp#         ↑ t = sticky bit

7. /dev — 设备文件

$ ls /devsda  sda1  sdb  null  zero  random  tty  pts/  stdin  stdout  stderr
设备
说明
sda
、sdb
SCSI/SATA 磁盘
null
黑洞,写入即丢弃
zero
无限输出 0
random
、urandom
随机数设备
tty
终端
pts/
伪终端(SSH 会话)

特点:这些不是真实磁盘文件,是内核提供的接口。

8. /proc — 进程信息(虚拟文件系统)

$ ls /proc1/     # PID 1 的进程目录(init/systemd)cpuinfomeminfoloadavgsys/net/...
文件/目录
内容
/proc/PID/
每个进程的信息目录
/proc/cpuinfo
CPU 详细信息
/proc/meminfo
内存详细信息
/proc/loadavg
负载平均值
/proc/sys/
内核参数(可修改!)

特点:

  • 大小显示为 0,因为不是真实文件

  • 实时反映系统状态

  • 可读写:修改 /proc/sys/ 下的文件直接改变内核行为

# 临时开启 IP 转发echo 1 > /proc/sys/net/ipv4/ip_forward# 永久生效需写入 /etc/sysctl.conf

9. /sys — 系统信息(sysfs)

$ ls /sysclass/  dev/  devices/  firmware/  fs/  kernel/  module/  power/
用途
说明
设备管理
比 /dev 更结构化的设备信息
内核模块
/sys/module/
 查看已加载模块
电源管理
/sys/power/
 控制休眠、唤醒

与 /proc 的区别:

  • /proc:进程和系统运行时信息

  • /sys:设备和内核对象信息


10. /opt — 可选第三方软件

$ ls /optgoogle/  containerd/  some-commercial-app/
特点
说明
用途
大型商业软件、独立应用包
对比 /usr/local
/opt 通常是完整自包含的应用目录
典型场景
Oracle、Google Chrome、容器运行时

11. /home — 用户家目录

$ ls /homealice/  bob/  charlie/
特点
说明
存放内容
普通用户的数据和配置
重要子目录
~/.bashrc
、~/.ssh/、~/bin/
权限
用户自己拥有,其他人不可读

root 的家目录是独立的 /root,不在 /home 下(安全考虑)。

12. /boot — 启动文件

$ ls /bootvmlinuz-5.14.0      # 内核镜像initramfs-5.14.0.img # 初始内存盘grub2/              # 引导加载器配置config-5.14.0       # 内核编译配置
特点
说明
重要性
系统启动必需
,损坏则无法启动
建议
单独分区,避免根目录满导致启动失败
大小
通常 500MB-1GB 足够

13. /run — 运行时数据

$ ls /runcrond.pid   nginx.pid   sshd.pid   systemd/   user/   lock/
特点
说明
前身
以前是 /var/run,现在独立为 tmpfs
存放内容
进程 PID 文件、套接字、运行时状态
特性
重启后清空
,内存存储,读写快

四、关键目录对比表

对比
目录A
目录B
区别
基础命令
/bin/usr/bin
前者系统启动必需,后者普通用户命令
系统命令
/sbin/usr/sbin
同上
手动安装
/usr/local/opt
前者是分散的 bin/lib,后者是自包含目录
临时文件
/tmp/var/tmp
前者重启清空,后者保留
虚拟文件
/proc/sys
前者进程信息,后者设备/内核对象
配置
/etc~/.config
前者系统级,后者用户级

五、生产环境最佳实践

1. 分区规划建议

# 推荐独立分区的目录/boot     # 500MB,防止根目录满导致无法启动/var      # 日志增长快,单独分区避免撑爆根目录/var/log  # 更大,日志审计合规要求/tmp      # 限制大小,防止临时文件攻击/home     # 用户数据独立,系统重装不丢失

2. 权限基线

# 关键目录权限检查ls -ld /tmp /var/tmp /etc /homedrwxrwxrwt 10 root root 4096 /tmp        # 1777,stickydrwxrwxrwt  7 root root 4096 /var/tmp    # 同上drwxr-xr-x 80 root root 4096 /etc        # 755,系统可读drwxr-xr-x  3 root root 4096 /home       # 755,用户目录在里面

3. 查找大文件

# 从根目录找大文件,但排除其他文件系统du -h -x / | sort -rh | head -20# 只看 /var/logdu -sh /var/log/* | sort -rh | head -10

六、常见错误和危险操作

危险操作
后果
原因
rm -rf /
系统毁灭
删除所有系统文件
rm -rf /boot/*
无法启动
内核和引导文件被删
chmod -R 777 /
系统崩溃
关键文件权限被破坏
> /var/log/messages
日志丢失
清空系统日志
在 /tmp 存重要数据
重启丢失
/tmp
 是 tmpfs

七、总结 checklist

□ /bin、/sbin:系统启动必需的基础命令□ /usr/bin、/usr/sbin:普通用户和系统管理命令□ /usr/local:手动编译安装的软件□ /etc:系统配置文件,修改前备份□ /var:动态数据,日志、缓存、邮件□ /tmp:临时文件,重启清空,不要存重要数据□ /proc、/sys:虚拟文件系统,实时反映系统状态□ /dev:设备接口,不是真实文件□ /home:用户数据,建议单独分区□ /boot:启动文件,必须保护好

一句话总结

/bin 是救命用的,/usr 是日常用的,/etc 是配置用的,/var 是日志用的,/proc 是内核暴露的——记住这四句话,目录结构就不乱了。

最新文章

随机文章