主要放置只读架构的数据文件,当然也包括共享文件。在这个目录下放置的数据几乎是不分硬件架构均可读取的数据,因为几乎都是文字文件。在此目录下常见的还有这些次目录:
/usr/share/man
—— 线上说明文档。
/usr/share/doc
—— 软件杂项的文件说明。
/usr/share/zoneinfo
—— 与时区有关的时区文件。1. 简介
由于 Linux 系统是开源的,存在众多不同的发行版,为了防止不同的 Linux 发行版的系统目录结构大相径庭,以至于用户从一个发行版迁移到别的发行版后不会使用,FHS(Filesystem Hierarchy Standard)标准诞生了。FHS 标准旨在让用户可以了解到系统上的库文件、已安装的软件文件通常的存放位置,即规范每个特定的目录下应该要放置什么数据。目前主流的 Linux 发行版基本都遵循 FHS 标准,因此它们的系统目录结构也大致相同。
以 Centos 7.x 为例,其文件系统架构如下图所示:
FHS 依据文件系统使用的频繁与否和是否允许使用者随意更改,将目录定义为四种交互作用的形态,具体举例如下表格所示:
FHS 针对目录树架构仅定义出三层目录下面应该放置什么数据而已,分别是下面这三个目录的定义:
/
(root,根目录):与开机系统有关。/usr
(unix software resource):与软件安装/执行有关。/var
(variable):与系统运行过程有关。/
目录根目录是整个系统最重要的一个目录,因为不但所有的目录都是由根目录衍生出来的,同时根目录也与开机/还原/系统修复等动作有关。由于系统开机时需要特定的开机软件、核心文件、开机所需程序、函式库等等文件数据,若系统出现错误时,根目录也必须要包含有能够修复文件系统的程序才行。
/
所在分区应该越小越好, 且应用程序所安装的软件最好不要与根目录放在同一个分区内,保持根目录越小越好。如此不但性能较佳,根目录所在的文件系统也较不容易发生问题。有鉴于上述的说明,因此 FHS 定义出根目录 /
下面应该要有下面这些次目录的存在才好,即使没有实体目录,FHS 也希望至少有链接文件存在才好:
需要注意的是,因为根目录与开机有关,开机过程中仅有根目录会被挂载,其它分区则是在开机完成之后才会持续地进行挂载的行为。因此根目录下与开机过程有关的目录,就不能够与根目录放到不同的分区中。以下目录不可与根目录分开:
/etc
:存放配置文件。/bin
:存放重要执行文件。/dev
:存放所需要的设备文件。/lib
:存放重要执行文件所需的函式库和核心相关模块。/sbin
:存放重要的系统执行文件。/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
下面应该要有下面这些次目录的存在才好:
/var
目录如果说 /usr
是安装时会占用较大硬盘容量的目录,那么 /var
就是在系统运行后才会渐渐占用硬盘容量的目录。因为 /var
目录主要针对常态性变动的文件,包括高速缓存(cache)、登录文件(log file)以及某些软件运行所产生的文件,包括程序文件(lock file、run file)等等。例如 MySQL 数据库的文件。FHS 定义出目录 /var
下面应该要有下面这些次目录的存在才好: