首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Linux目录结构

Linux目录结构

作者头像
hotarugali
发布于 2022-03-18 19:46:45
发布于 2022-03-18 19:46:45
11K0
举报

主要放置只读架构的数据文件,当然也包括共享文件。在这个目录下放置的数据几乎是不分硬件架构均可读取的数据,因为几乎都是文字文件。在此目录下常见的还有这些次目录:

/usr/share/man—— 线上说明文档。

/usr/share/doc—— 软件杂项的文件说明。

/usr/share/zoneinfo—— 与时区有关的时区文件。1. 简介

由于 Linux 系统是开源的,存在众多不同的发行版,为了防止不同的 Linux 发行版的系统目录结构大相径庭,以至于用户从一个发行版迁移到别的发行版后不会使用,FHS(Filesystem Hierarchy Standard)标准诞生了。FHS 标准旨在让用户可以了解到系统上的库文件、已安装的软件文件通常的存放位置,即规范每个特定的目录下应该要放置什么数据。目前主流的 Linux 发行版基本都遵循 FHS 标准,因此它们的系统目录结构也大致相同。

  • 了解 Linux 文件目录结构的标准和每个目录的详细功能,对于用户用好 Linux 系统至关重要。

2. FHS 标准

以 Centos 7.x 为例,其文件系统架构如下图所示:

2.1 目录的形态

FHS 依据文件系统使用的频繁与否和是否允许使用者随意更改,将目录定义为四种交互作用的形态,具体举例如下表格所示:

  • 可分享的:可以分享给其它系统挂载使用的目录,所以包括可执行文件与使用者的邮件等数据,是能够分享给网络上其它主机挂载使用的目录。
  • 不可分享的:自己机器上面运行的设备文件或者是与程序有关的 Socket 文件等,由于仅与自身机器有关,所以当然就不适合分享给其它主机了。
  • 不变的:有些数据是不会经常变动的,跟随着发行版而不变动。比如函式库、文件说明文档、系统管理员所管理的主机服务配置文件等等。
  • 可变的:经常改变的数据,比如登录文件、一般用户可自行收受的新闻群组等。

2.2 目录的架构

FHS 针对目录树架构仅定义出三层目录下面应该放置什么数据而已,分别是下面这三个目录的定义:

  • /(root,根目录):与开机系统有关。
  • /usr(unix software resource):与软件安装/执行有关。
  • /var(variable):与系统运行过程有关。
2.2.1 / 目录

根目录是整个系统最重要的一个目录,因为不但所有的目录都是由根目录衍生出来的,同时根目录也与开机/还原/系统修复等动作有关。由于系统开机时需要特定的开机软件、核心文件、开机所需程序、函式库等等文件数据,若系统出现错误时,根目录也必须要包含有能够修复文件系统的程序才行。

  1. 因为根目录是这么的重要,所以在 FHS 的要求方面,它希望根目录不要放在非常大的分区内, 因为越大的分区你会放入越多的数据,如此一来根目录所在分区就可能会有较多发生错误的机会。
  2. FHS 标准建议:根目录 / 所在分区应该越小越好, 且应用程序所安装的软件最好不要与根目录放在同一个分区内,保持根目录越小越好。如此不但性能较佳,根目录所在的文件系统也较不容易发生问题。

有鉴于上述的说明,因此 FHS 定义出根目录 / 下面应该要有下面这些次目录的存在才好,即使没有实体目录,FHS 也希望至少有链接文件存在才好:

  • FHS 要求必须要存在的目录
  • FHS 建议可以存在的目录
  • 非 FHS 标准规定但同样重要的目录

需要注意的是,因为根目录与开机有关,开机过程中仅有根目录会被挂载,其它分区则是在开机完成之后才会持续地进行挂载的行为。因此根目录下与开机过程有关的目录,就不能够与根目录放到不同的分区中。以下目录不可与根目录分开:

  • /etc:存放配置文件。
  • /bin:存放重要执行文件。
  • /dev:存放所需要的设备文件。
  • /lib:存放重要执行文件所需的函式库和核心相关模块。
  • /sbin:存放重要的系统执行文件。
2.2.2 /usr 目录

【注】很多读者都会误会 usr 为 user 的缩写,其实 usr 是 Unix Software Resource 的缩写,即「Unix 操作系统软件资源」所放置的目录,而不是使用者的数据目录。

早期 Linux 在设计的时候,若发生问题时,救援模式通常仅挂载根目录而已,因此有五个重要的目录被要求一定要与根目录放置在一起,那就是 /etc、/bin、/dev、/lib、/sbin 这五个重要目录。现在许多的 Linux 发行版由于已经将许多非必要的文件移出 /usr 之外了,所以 /usr 也是越来越精简。同时因为 /usr 被建议为「即使挂载成为只读,系统还是可以正常运行」的模样,所以救援模式也能同时挂载 /usr。

CentOS 7.x 版本在救援模式时就挂载了 /usr 目录,而且 CentOS 7.x 已经将 /sbin、/bin、/lib 通通移动到 /usr 下面了,即 /sbin、/bin、/lib 都只是 /usr/sbin、/usr/bin、/usr/lib 的符号链接。因此那个五大目录的限制其实已经被打破了。

依据 FHS 的基本定义,/usr 里面放置的数据属于可分享的与不可变动的。所有系统默认的软件(发行版发布者提供的软件)都会放置到 /usr 下面,因此这个目录有点类似 Windows 系统的 C:\Windows(当中的一部份)和 C:\Program files 这两个目录的综合体。FHS 定义出目录 /usr 下面应该要有下面这些次目录的存在才好:

  • FHS 要求必须要存在的目录
  • FHS 建议可以存在的目录
2.2.3 /var 目录

如果说 /usr 是安装时会占用较大硬盘容量的目录,那么 /var 就是在系统运行后才会渐渐占用硬盘容量的目录。因为 /var 目录主要针对常态性变动的文件,包括高速缓存(cache)、登录文件(log file)以及某些软件运行所产生的文件,包括程序文件(lock file、run file)等等。例如 MySQL 数据库的文件。FHS 定义出目录 /var 下面应该要有下面这些次目录的存在才好:

  • FHS 要求必须要存在的目录

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-08-24,如有侵权请联系 cloudcommunity@tencent.com 删除
目录
  • 2. FHS 标准
    • 2.1 目录的形态
    • 2.2 目录的架构
      • 2.2.1 / 目录
      • 2.2.2 /usr 目录
      • 2.2.3 /var 目录
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档