Skip to content

Linux 组织架构与目录结构

Linux 的整体结构可以理解为:内核负责管理硬件资源,Shell 和系统服务提供操作入口,用户程序运行在其上,所有内容都通过统一的文件系统组织起来

Linux 与 Windows 最大的不同之一是Linux 没有 C盘D盘 这样的盘符概念,而是从一个统一的根目录 / 开始,所有磁盘、设备、配置、程序、用户文件都挂载在这棵目录树下面。

Linux 系统整体架构

各层含义:

层级说明
用户使用系统的人或服务账号
Shell / 图形界面用户与系统交互的入口,如 Bash、Zsh、GNOME
系统命令与应用程序lsvimpythongcc
系统调用程序请求内核服务的接口
Linux 内核管理 CPU、内存、磁盘、网络、设备
硬件真实的计算机资源

Linux 文件系统总览

Linux 文件系统从根目录 / 开始,常见结构如下:

常见一级目录说明

目录作用初学者理解
/bin基础用户命令存放 lscpmv 等基础命令
/sbin系统管理命令存放管理员使用的命令
/etc系统配置文件系统和服务的配置中心
/home普通用户家目录每个普通用户的个人目录
/rootroot 用户家目录管理员 root 的 home
/usr用户级程序和库大量软件、命令、库文件
/var经常变化的数据日志、缓存、数据库、邮件等
/tmp临时文件程序或用户临时存放文件
/opt第三方软件手动安装的大型软件常放这里
/dev设备文件磁盘、终端、GPU 等设备入口
/proc内核和进程虚拟文件系统查看进程、CPU、内存等运行状态
/sys设备和内核虚拟文件系统查看或管理硬件设备状态
/run运行时数据系统启动后产生的临时状态文件
/lib/lib64系统基础库命令和程序运行依赖的库
/boot启动文件内核、引导加载器相关文件
/media可移动设备挂载点U 盘、移动硬盘自动挂载位置
/mnt临时挂载点管理员手动挂载磁盘常用
/srv服务数据Web、FTP 等服务的数据目录

/bin/sbin

/bin

/bin 存放系统最基础的用户命令,例如:

bash
ls
cp
mv
rm
cat
mkdir

这些命令通常是系统启动后最基本也最常用的工具。

/sbin

/sbin 存放系统管理命令,例如:

bash
ip
fsck
reboot
shutdown
useradd

很多 /sbin 下的命令需要管理员权限。

bash
sudo reboot
sudo useradd testuser

简单理解:

目录面向对象
/bin普通用户常用基础命令
/sbin系统管理员常用命令

/etc:配置文件中心

/etc 保存系统和软件的配置文件。

常见文件或目录:

路径说明
/etc/passwd用户账号信息
/etc/group用户组信息
/etc/shadow用户密码哈希,普通用户不可读
/etc/ssh/SSH 服务和客户端配置
/etc/fstab文件系统挂载配置
/etc/hosts本地域名解析
/etc/os-release系统发行版信息

示例:

bash
cat /etc/os-release
cat /etc/hosts

注意:修改 /etc 下的配置通常需要 sudo,并且可能影响整个系统。

/home:普通用户家目录

普通用户的个人文件通常放在 /home/用户名 下。

例如:

text
/home/alice
/home/bob

用户登录后默认一般会进入自己的 home 目录。

bash
cd ~
pwd

~ 表示当前用户的 home 目录。

常见内容:

text
/home/alice/Documents
/home/alice/Downloads
/home/alice/.ssh
/home/alice/.bashrc

. 开头的文件是隐藏文件,例如:

文件说明
~/.bashrcBash Shell 配置
~/.ssh/SSH 密钥和配置
~/.vimrcVim 配置
~/.profile登录环境配置

查看隐藏文件:

bash
ls -a ~

/root:root 用户家目录

/root 是管理员用户 root 的 home 目录,不是根目录 /

路径含义
/整个 Linux 文件系统的根
/rootroot 用户的个人目录

普通用户通常没有权限访问 /root

/usr:用户程序与共享资源

/usr 是 Linux 中非常重要的目录,存放大量用户级程序、库文件、头文件和文档。

常见目录:

路径说明
/usr/bin大多数普通命令
/usr/sbin非基础系统管理命令
/usr/lib软件库
/usr/include编译程序需要的头文件
/usr/share文档、图标、语言包等共享资源
/usr/local本机手动安装的软件

例如:

bash
which python3
which gcc

可能输出:

text
/usr/bin/python3
/usr/bin/gcc

/var:变化的数据

/var 存放经常变化的数据,例如日志、缓存、队列、数据库文件等。

常见路径:

路径说明
/var/log日志文件
/var/cache软件缓存
/var/tmp可跨重启保留的临时文件
/var/lib服务保存的数据
/var/spool打印、邮件等队列

查看系统日志示例:

bash
ls /var/log
less /var/log/syslog

不同发行版日志文件名可能不同。

/tmp:临时文件

/tmp 用于存放临时文件,所有用户通常都可以写入。

bash
cd /tmp
touch test.txt

注意:

  • /tmp 中的文件可能被系统自动清理。
  • 不要把重要数据长期放在 /tmp
  • 多用户系统中,不要在 /tmp 放敏感文件。

/opt:第三方软件

/opt 常用于安装第三方大型软件或商业软件。

例如:

text
/opt/intel
/opt/cuda
/opt/MATLAB

在 HPC 集群中,管理员安装的软件也可能放在 /opt 或共享软件目录中。

/dev:设备文件

Linux 把很多硬件设备也表示为文件,放在 /dev 下。

常见设备:

路径说明
/dev/sda第一块 SATA/SCSI 磁盘
/dev/nvme0n1NVMe 固态硬盘
/dev/null黑洞设备,写入内容会被丢弃
/dev/zero无限输出 0 的设备
/dev/tty当前终端
/dev/random随机数设备

示例:

bash
lsblk
ls /dev

/dev/null 常见用法:

bash
command > /dev/null

表示丢弃标准输出。

/proc:进程和内核信息

/proc 是虚拟文件系统,不是真实磁盘文件。它由内核动态生成,用于查看系统运行状态。

常见文件:

路径说明
/proc/cpuinfoCPU 信息
/proc/meminfo内存信息
/proc/version内核版本
/proc/uptime系统运行时间
/proc/PID/某个进程的信息目录

示例:

bash
cat /proc/cpuinfo
cat /proc/meminfo
cat /proc/version

查看当前 Shell 进程:

bash
echo $$
ls /proc/$$

/sys:设备与内核对象

/sys 也是虚拟文件系统,主要用于展示设备、驱动、总线等内核对象。

常见路径:

路径说明
/sys/class按类别组织设备
/sys/block块设备,如磁盘
/sys/bus总线信息
/sys/devices设备层级结构

初学者通常只需要知道:/sys 用于查看硬件和驱动状态,手动修改需谨慎。

/run:运行时状态

/run 存放系统本次启动后的运行时数据,例如进程 ID 文件、服务状态、Socket 文件等。

例如:

text
/run/sshd.pid
/run/user/1000

特点:

  • 重启后内容会重新生成。
  • 普通用户通常不需要手动管理。

/boot:启动相关文件

/boot 存放系统启动所需文件,包括 Linux 内核和引导加载器配置。

常见内容:

text
/boot/vmlinuz-*
/boot/initrd.img-*
/boot/grub/

注意:不要随意删除 /boot 下的文件,否则系统可能无法启动。

/media/mnt:挂载点

Linux 中访问磁盘分区、U 盘、网络存储时,需要将它们“挂载”到某个目录。

/media

通常用于桌面系统自动挂载 U 盘、移动硬盘。

text
/media/alice/USB_DISK

/mnt

常用于管理员临时手动挂载。

bash
sudo mount /dev/sdb1 /mnt
ls /mnt
sudo umount /mnt

相关命令:

命令说明
mount挂载文件系统
umount卸载文件系统
lsblk查看磁盘和挂载点
df -h查看已挂载文件系统空间

/srv:服务数据

/srv 用于存放系统对外提供服务的数据。

例如:

text
/srv/www
/srv/ftp

实际使用中,Web 服务数据也常放在:

text
/var/www

具体位置取决于发行版和管理员配置。

文件系统、磁盘与挂载关系

Linux 的目录树不等于一块磁盘。不同目录可以来自不同磁盘、分区或网络存储。

查看挂载情况:

bash
df -h
lsblk
mount

常见情况:

目录可能来源
/系统盘
/boot独立启动分区
/home本地磁盘或网络存储
/data大容量数据盘
/scratchHPC 临时高速存储
/mnt临时挂载设备

Linux 中“一切皆文件”的思想

Linux 把很多资源抽象成文件:

类型示例
普通文件/home/alice/a.txt
目录/home/alice/project
设备/dev/sda
进程信息/proc/1234
网络配置/proc/net/sys/class/net
管道和 Socket/run 下的部分文件

这种设计使得很多资源都可以通过统一方式查看、读写和管理。