跳转到内容

文件系统层级标准

Linux 系统的所有内容都挂载在一个统一的根目录 / 之下,不存在类似 Windows 那样按盘符划分的多根结构。不同发行版在根目录下的组织方式高度一致,原因是它们都遵循同一套约定——文件系统层级标准(Filesystem Hierarchy Standard,FHS)。理解这套标准下各目录的用途,是后续查找配置文件、安装软件、排查问题的基础。

  • 文件夹/
    • 文件夹bin/ 基础命令的可执行文件(现代发行版中通常是指向 /usr/bin 的符号链接)
    • 文件夹boot/ 引导加载程序和内核相关文件
    • 文件夹dev/ 设备文件,硬件以文件形式呈现在这里
    • 文件夹etc/ 系统级配置文件
    • 文件夹home/ 普通用户的个人目录
    • 文件夹lib/ 系统运行所需的共享库文件
    • 文件夹opt/ 第三方软件的可选安装位置
    • 文件夹proc/ 内核和进程信息的虚拟文件系统
    • 文件夹root/ root 用户的个人目录(不是根目录本身)
    • 文件夹tmp/ 临时文件,系统重启通常会清空
    • 文件夹usr/ 用户级程序和资源的主要存放位置
    • 文件夹var/ 经常变化的数据,如日志、缓存

/etc/home 下的配置文件:系统级配置(影响所有用户)存放在 /etc 下,例如网络配置、服务配置;用户级配置(只影响当前用户)存放在对应用户 /home/<username> 目录下,通常是以 . 开头的隐藏文件,例如 .bashrc.gitconfig。两者作用范围不同,排查配置问题时需要先确认改动的是哪一层。

/bin/usr/bin/usr/local/bin:这三个目录都存放可执行程序,区别在于来源。/usr/bin 存放发行版包管理器安装的程序;/usr/local/bin 存放不经过包管理器、手动编译或单独下载安装的程序;/bin 在现代发行版中大多已经合并为指向 /usr/bin 的符号链接,仅为保持向后兼容而保留。这也是为什么手动编译安装的工具通常会出现在 /usr/local/bin 而不是 /usr/bin 下。

/proc:这是一个虚拟文件系统,其中的文件并不对应磁盘上真实存在的数据,而是内核在运行时动态生成的、反映当前系统状态的信息,例如 /proc/cpuinfo 显示 CPU 信息,/proc/<pid>/ 下存放对应进程 ID 的运行时信息。查看和排查系统运行状态时会频繁用到这个目录。

后续安装软件、配置服务、编写脚本时,路径几乎不可避免地要涉及这套目录结构——例如判断一个命令为什么“安装了却执行不了”,往往是因为它被安装到了不在 PATH 环境变量覆盖范围内的目录;判断某个服务的配置改动为什么没有生效,往往需要先确认改的是不是正确层级的配置文件。建立起对这套层级结构的整体认知,能显著减少后续排查问题时的盲目尝试。

这个主题是构建可靠 Linux 开发流程的重要组成部分。对它有清晰的理解,会让后续任务变得更容易,因为你能更快地判断某一步是否缺失或使用不当。

  • 在安全的测试环境中尝试这里展示的命令和配置。
  • 比较这些概念在不同发行版或工具之间的适用差异。
  • 记下一次实践中哪些步骤成功,哪些失败,这样下次遇到问题时更容易定位。
  • 将这篇文章与系列中相关内容结合起来,加深整体理解。
  • 跳过验证步骤,默认系统已经配置正确。
  • 不对命令中的路径、软件包名称或工具版本进行适配,直接复制粘贴执行。
  • 把这个主题当成孤立的技巧,而不是整个开发流程的一部分。