跳转至

Linux 目录结构和重要文件路径说明

Linux用精妙的目录结构诠释了"一切皆文件"的设计哲学。本文梳理的不仅是路径位置,更是理解系统运作的逻辑地图——无论是排查/var/log的异常日志,配置/etc下的关键服务,还是挂载/dev中的硬件设备,这些知识都将成为你运维实践的基石。

Linux 目录结构图

标准 Linux 发行版的目录结构如下图示:

Linux 目录说明

收藏本文,下次登录服务器时不妨用ls -l验证目录功能,你会发现:命令行下的世界,从未如此清晰。


你一定听说过,在 UNIX 和 UNIX 衍生系统(如 Linux)中,一切皆文件
如果不是文件,那就一定是正在运行的进程。

Linux 系统中存在多种文件类型。对初学者而言,最重要的三类是:

  • 普通文件 —— 由二进制或 ASCII 数据组成的常规文件(文档、图片、音视频等)。
  • 目录文件 —— 在 Linux 中,目录也被视为文件,用于存放其他文件和子目录。
  • 设备文件 —— 位于 /dev 中,为硬件设备(鼠标、键盘、硬盘)提供统一访问接口。

拓展知识

除了上述三类,Linux 还支持符号链接管道(FIFO)套接字(socket) 等特殊文件类型。初学者先掌握三类即可,后续再深入了解。


为了便于理解和记忆,我将这些目录分成五个功能组分别介绍。


一、系统启动相关目录

这部分目录保存了引导系统、加载内核以及存放基础配置和可执行文件的关键内容。

/ – 根目录

根目录由单个斜线 / 表示,是整个文件系统的最顶层。它包含 Linux 系统中所有目录、子目录和文件。

注意

根目录 / 与根用户的家目录 /root 是两个完全不同的位置,切勿混淆。

/boot – 引导文件目录

包含 Linux 启动所需的文件:引导加载程序(如 GRUB)、内核映像(如 vmlinuz)以及初始内存磁盘(initrd/initramfs)。

ls -l /boot

/etc – 配置文件中心

神经中枢级别的目录。存放几乎所有服务、脚本和已安装软件的系统级配置文件。例如网络配置、用户账户信息、软件包管理设置等。

# 查看常见的配置文件
ls /etc/*.conf

/bin – 用户二进制命令

包含所有用户(包括普通用户)都可以执行的常用系统命令,如 lscpmvcatecho 等。
在现代大多数发行版中,/bin 是指向 /usr/bin 的符号链接。

/sbin – 管理员专用命令

存放供 root 用户(或具有 sudo 权限的用户)使用的系统管理命令,如 fdiskrebootiptablesifconfig 等。

# 查看 sbin 下有哪些工具
ls /sbin

/lib – 共享库文件

存储 /bin/sbin 中程序运行所需的基本共享库(类似于 Windows 的 DLL)。通常也是指向 /usr/lib 的符号链接。


二、用户数据与可变数据目录

这部分目录存放用户的个人文件、应用数据、日志及临时文件。

/home – 普通用户的家目录

每个普通用户都会在 /home 下拥有一个同名的子目录(如 /home/alice)。里面包含文档、下载、桌面、音乐等默认文件夹,以及以点开头的隐藏配置文件(如 .bashrc)。

cd ~          # 进入当前用户的家目录
ls -la        # 查看包括隐藏文件在内的所有内容

/root – 超级用户的家目录

root 用户的专属家目录。普通用户无法访问(权限为 drwx------),只有 root 可以读写。

/opt – 第三方软件安装目录

用于存放非系统仓库默认提供的附加软件包,例如手动安装的 QQ、微信、WPS Office、Java 等。通常每个软件会放在 /opt/软件名 下。

/var – 可变数据目录

存放系统运行过程中会自动变化的数据,主要包括:

  • /var/log – 系统及服务日志文件
  • /var/cache – 应用程序缓存
  • /var/spool – 打印队列、邮件队列等
  • /var/tmp – 持久性临时文件(重启后保留)
# 查看系统日志最后20行
tail -20 /var/log/syslog      # Debian/Ubuntu
tail -20 /var/log/messages     # RHEL/CentOS

/tmp – 临时文件目录

程序和用户存放临时数据的地方。系统重启后大多数发行版会自动清空此目录。

注意

不要随意删除 /tmp 下正在被程序使用的文件,否则可能导致该程序运行异常。但这些删除操作几乎不会导致整个系统崩溃,不必过度担心。


三、设备与内核接口目录

这些目录是 Linux 与硬件、内核及进程交互的桥梁,多数为虚拟文件系统。

/dev – 设备文件目录

包含所有硬件设备对应的特殊文件。例如:

  • /dev/sda – 第一个 SATA/SCSI 硬盘
  • /dev/nvme0n1 – 第一个 NVMe SSD
  • /dev/tty – 终端设备
  • /dev/null – 数据黑洞(任何写入的内容都会被丢弃)

/proc – 进程与内核信息虚拟文件系统

一个伪文件系统,在内存中动态生成,记录了当前运行的进程内核状态。最常用的文件包括:

文件 说明 查看命令
/proc/cpuinfo CPU 信息(型号、核心数、频率) cat /proc/cpuinfo
/proc/meminfo 内存使用详情 cat /proc/meminfo
/proc/version Linux 内核版本 cat /proc/version
/proc/mounts 当前已挂载的文件系统 cat /proc/mounts

只读性质

/proc 在系统启动时创建,关机时销毁,其中的文件大小显示为 0,因为它们是实时从内核获取的数据。

/sys – 设备与驱动模型虚拟文件系统

/proc 更结构化的内核接口,用于管理设备和电源等。通常用于高级调优和开发。

/run – 运行时数据目录

存放自系统启动以来的易失性运行时数据,例如进程 PID 文件、系统服务状态等。它是一个 tmpfs(内存文件系统),重启后内容消失。

ls /run

四、挂载点目录

用于临时或动态挂载其他存储设备的空目录。

/mnt – 临时挂载点

系统管理员可以在此目录下创建子目录,用于临时挂载硬盘分区、网络存储或 ISO 镜像。

sudo mount /dev/sdb1 /mnt/usb

/media – 可移动媒体自动挂载点

现代桌面 Linux 会自动将插入的 USB 盘、光盘、手机存储挂载到 /media/用户名/卷标 下。


五、共享只读数据目录

/usr – 系统级只读数据

最重要的目录之一,存放系统范围的只读共享数据,包括:

  • /usr/bin – 大多数用户命令
  • /usr/lib – 共享库
  • /usr/share – 文档、图标、man 手册等独立于架构的数据
  • /usr/include – C/C++ 头文件
# /usr 占用空间通常最大
du -sh /usr

FHS 演进

许多传统顶层目录(如 /bin/lib)在现代发行版中都已成为指向 /usr/bin/usr/lib 的符号链接,这是为了简化系统布局。


常见的重要文件速查表

为了便于日常运维,下面按功能分组列出一些关键文件及其路径(已修正过时或发行版特有的内容)。

启动与配置

文件/目录 用途
/boot/vmlinuz-* Linux 内核映像(具体版本号以实际为准)
/etc/fstab 静态文件系统信息(定义磁盘挂载点)
/etc/crontab 系统级定时任务配置文件
/etc/hosts 本地主机名到 IP 地址的静态映射
/etc/resolv.conf DNS 解析器配置
/etc/profile 全局 shell 环境配置(登录时执行)
/etc/bash.bashrc (Debian/Ubuntu) 或 /etc/bashrc (RHEL) 全局 bash 配置
/etc/skel/ 新用户家目录模板(创建用户时自动复制)

硬件与设备

文件/目录 用途
/dev/sda/dev/nvme0n1 第一块硬盘的设备文件
/dev/null 丢弃所有写入的数据
/dev/random/dev/urandom 随机数生成器
/proc/cpuinfo CPU 信息
/proc/meminfo 内存信息
/proc/mounts 当前挂载的文件系统列表(注意是复数 mounts

用户与安全

文件/目录 用途
/etc/passwd 用户账号信息(不含密码)
/etc/shadow 加密后的用户密码(仅 root 可读)
/etc/group 用户组信息
/etc/sudoers sudo 权限配置(用 visudo 编辑)
/var/log/lastlog 二进制文件,记录每个用户最近一次登录时间
/var/log/wtmp 记录所有登录/注销历史(用 last 命令查看)

日志与运行时

文件/目录 用途
/var/log/syslog (Debian/Ubuntu) 系统常规日志
/var/log/messages (RHEL/CentOS) 系统常规日志
/var/log/auth.log (Debian/Ubuntu) 认证与安全日志
/var/log/kern.log 内核日志
/run 运行时 PID 和状态文件

过时文件说明

  • /etc/hosts.allow/etc/hosts.deny 仅在安装并启用 tcpwrappers 时有效,现代防火墙(iptables/nftables)已基本替代它。
  • /etc/printcap 在 CUPS 环境中很少使用,打印机配置通常位于 /etc/cups/printers.conf
  • /etc/rc.d/init.d 属于 SysV init 风格,systemd 发行版已改用 systemd unit(如 /etc/systemd/system)。

总结与实战小技巧

Linux 的目录结构并非随意设计,而是遵循 FHS 标准,体现了“一切皆文件”的哲学。掌握这些目录的用途,能让你:

  • 快速定位配置文件(在 /etc 中找)
  • 排查系统问题(查看 /var/log
  • 理解进程与内核(探索 /proc
  • 合理管理软件(/opt/usr/local

立即上手的三条命令

# 1. 查看根目录下各个目录的权限和所有者
ls -ld /*

# 2. 查看当前已挂载的文件系统及使用情况
df -h

# 3. 在 /etc 中搜索所有 .conf 文件,感受配置文件的分布
find /etc -name "*.conf" | head -20

学习建议

收藏本文,下次登录服务器时,不妨用 ls -l /cat /etc/os-release 开始你的探索之旅。命令行下的世界,从未如此清晰。