跳到主要内容

目录总揽

plaintext
/-
┠ bin, sbin 二进制可执行文件
┠ boot 启动相关
┠ dev 设备文件
┠ etc 配置文件
┠ home 用户家目录
┠ lib, lib64 库文件
┠ media, mnt 挂载点
┠ opt 可选应用程序
┠ proc 进程信息虚拟文件系统
┠ root root 用户的家目录
┠ run 运行时数据
┠ sbin 系统管理二进制
┠ srv 服务数据
┠ sys 系统信息虚拟文件系统
┠ tmp 临时文件
┠ user Unix 系统资源
┠ var 可变数据

根目录

\ 是一切的起点。 Linux 采用单根树形结构,所有文件和目录都从根目录开始往下延伸。 / 是整个文件系统的起点,也是绝对路径的开头。

二进制程序目录

/bin --- 基本命令二进制文件

存放系统最基本的可执行程序,所有用户都能使用。比如:

  • lscpmvcatechorm 等日常命令
  • 这些命令在系统启动早期就必须可用(甚至在挂载其他目录之前)

现代系统中,/bin 通常是指向 /usr/bin 的符号链接。

/sbin --- 系统管理二进制

存放系统管理员使用的命令,通常需要 root 权限。比如:

  • rebootshutdownifconfigiptablesfdisk
  • 这些命令主要用户系统维护和管理

现代系统中,/sbin 通常是指向 /usr/sbin 的符号链接。

/usr --- Unix System Resources (系统资源)

整个目录中最大的目录,可以理解为“用户程序和数据的大本营”。

重要的子目录

  • /usr/bin :绝大多数用户命令的安装位置。通过包管理器(apt/yum)安装的程序,几乎都在这里。比如 pythongitcurlwget
  • /usr/sbin : 非关键性的系统管理命令
  • /usr/lib/usr/lib64 :程序运行所需的共享库文件(.so 文件)
  • /usr/share :架构无关的数据文件。比如文档、图标、locale 语言包、时区数据等
  • /usr/local :本地编译安装的软件的首选位置

/usr/local --- 本地安装的软件

手动编译安装或从源码构建的软件的推荐位置,不会和包管理器产生冲突。

典型结构:

  • /usr/local/bin :编译的程序
  • /usr/local/lib :相关的库
  • /usr/local/etc :相关配置

配置文件目录

/etc --- 系统级配置文件。

所有系统和应用程序的配置文件几乎都在这里。这是 Linux 中最重要、最需要熟悉的目录之一。

  • /etc/passwd :用户账户信息
  • /etc/group :用户组的信息
  • /etc/shadow :加密后的用户密码
  • /etc/hosts :本地 DNS 映射
  • /etc/nginx/ :Nginx 的配置文件目录
  • /etc/ssh/ :SSH 服务配置
  • /etc/systemd/ :systemd 服务管理配置
  • /etc/crontab :定时任务配置
铁律

改配置文件前先备份

用户相关目录

/home --- 普通用户的主目录

每个普通用户登录后,默认进入自己的主目录。

该目录特特点:

  • 只有该用户和 root 能随意读写
  • 存放用户的个人文件、下载内容、个人脚本
  • 用户的 SSH 密钥( ~/.ssh/id_rsa ) 也存放在这里
  • 用户级的配置文件(如 ~/.bashrc~/.vimrc

/root --- root 用户的主目录

root 用户的主目录不在 /home 下,而是直接在根目录下。这是出于安全和便利考虑 -- 即使 /home 所在的分区没有挂载, root 也能正常登录。

可变数据目录(经常变化的文件)

/var --- Variable Data (可变数据)

存放那些大小和内容会持续增长或变化的文件。也是服务器运维中最重要的目录之一。

关键子目录:

  • /var/log :系统日志和应用的日志。比如 /var/log/nginx/access.log/var/log/syslog/var/log/auth.log
  • /var/lib :程序运行时的持久化数据。比如数据库文件(/var/lib/mysql/)、Docker 数据(默认在 /var/lib/docker
  • /var/spool :列队数据。比如打印列队、邮件列队
  • /var/tmp :需要保留较长时间的临时文件(重启后不删除)
  • /var/cache :应用程序的缓存数据
  • /var/run (现在通常是 /run 的符号链接):存放运行时 PID 文件、 socket 文件等

设备与硬件相关

/dev --- Device File (设备文件)

Linux 中一切皆文件,硬件设备在 /dev 下表现为特殊的文件。

常见的设备文件:

  • /dev/sda/dev/sdb :硬盘设备
  • /dev/null :黑洞设备,写入的数据直接丢弃(常用于屏蔽输出)
  • /dev/zero :无限零字节流
  • /dev/random/dev/urandom :随机数生成器
  • /dev/tty :终端设备

/proc --- Process Information (进程信息虚拟文件系统)

这是一个伪文件系统,不占用磁盘空间,而是内核动态生成的。它反映了当前系统的运行状态。

关键文件:

  • /proc/cpuinfo :CPU 信息
  • /proc/meminfo :内存信息
  • /proc/version :内核信息
  • /proc/[pid]/ :每一个正在运行的进程都有一个以 PID 命名的文件
  • /proc/loadavg :系统负载

/sys --- System information (系统信息虚拟文件系统)

/proc 类似,也是一个虚拟文件系统,主要用户导出内核对象(如设备、驱动、内核参数)的信息,方便用户空间程序访问和配置。

启动相关

/boot --- Boot Loader Files (启动加载器文件)

存放系统启动所需的关键文件:

  • 内核镜像文件( 如 vmlinuz-xxx
  • 初始内存磁盘镜像( initrd.img-xxx
  • GRUB 启动菜单配置( /boot/grub/
  • 系统启动的第一阶段就依赖该目录

**千万不要随意删除这里的文件!**否则系统可能无法启动

挂载点目录

/mnt --- Mount (临时挂载点)

用户临时挂载文件系统。比如插了个 U 盘或外接硬盘,可以手动挂载到 /mnt/usb 这样的子目录。

/media --- Media (可移动介质挂载点)

现代 Linux 桌面系统会自动把光盘、U 盘等可移动设备挂载到这里,通常会创建以设备名为名的子目录。

/srv --- Service Data (服务数据)

存放系统对外提供所用到的数据。根据 FHS, Web 服务器的数据可以放到这里,比如 /srv/www//srv/ftp/ 等。不过在实际使用中, /var/www 更常见。

临时文件

/tmp --- Temporary Files (临时文件)

所有用户都可以读写。系统重启后,里边的内容通常会清空

适合存放临时下载的文件、编译中间产物等不需要永久保存的数据。

/run --- Runtime Data (运行时数据)

存放系统启动后产生的运行时信息,如 PID 文件、 Socket 文件、锁文件等。现代系统中, /var/run 通常指向 /run 的符号链接。