linux学习笔记-目录结构(1)

时间:2021-06-20 00:09:53

每个linux系统的目录结构差不多,因为有FHS(Filesystem Hierarchy Standard)标准的规范。

FHS的重点在于规范每个特定的目录下应该要放什么样的数据。

FHS依据文件系统使用的频繁与否是否允许用户随意改动,而将目录定义为四种交互作用的形态:

  1. 可分享的:可以分享给其他系统挂载使用的目录,包括执行文件和用户的邮件等数据。
  2. 不可分享的:自己机器上面运行的设备文件或者是与程序有关的socket文件等。
  3. 不变的:有些数据是不会经常变动的,例如函数库、文件说明文件、系统管理员所管理的主机服务配置文件等。
  4. 可变的:经常改变的数据,例如登录文件、新闻组等。

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

  1. /:与开机系统有关
  2. /usr:与软件安装/执行有关
  3. /var:与系统运作过程有关。

1、根目录(/)的意义与内容

根目录是整个系统最重要的一个目录,因为不但所有的目录都是由根目录衍生出来的,同时,根目录也与开机、还原、系统修复等操作有关。

根目录不要放在非常大的分区内,因为越大的分区会放入越多的数据,有较多发生错误的可能。因此FHS标准建议:根目录所在分区应该越小越好,且应用程序所安装的软件最好不要与根目录放在一个分区内。

FHS定义出根目录下面应该有下面这些子目录的存在:

  • /bin:放置在单用户维护模式下还能够被操作的命令。/bin下面的命令可以被root与一般账号所使用,主要有cat、chmod、chown、date等常用命令。
  • /boot:主要放置开机会使用到的文件,包括Linux内核文件以及开机菜单与开机所需配置文件等。
  • /dev:任何设备与接口设备都是以文件的形式存在于这个目录当中。访问这个目录下的文件,相当于访问某个设备。
  • /etc:系统主要的配置文件几乎都放置在这个目录内。一般只有root有权修改。
  • /home:系统默认的用户主文件夹。~代表目前这个用户的主文件夹。
  • /lib:放置开机时会用到的函数库,以及在/bin或/sbin下面的命令调用的函数库。/lib/modules这个目录放置内核相关的模块(驱动程序)。
  • /media:可删除的设备,包括软盘、光盘等设备都暂时挂载于此。
  • /mnt:暂时挂载某些额外的设备。
  • /opt:第三方软件放置的目录。
  • /root:系统管理员的主文件夹。一般与根目录放置在同一个分区中。
  • /sbin:开机过程中所需要的,包括开机、修复、还原系统所需要的命令。
  • /srv:一些网络服务启动后,这些服务所需要取用的数据目录。
  • /tmp:临时文件目录,不要放重要数据。

以下几个也是非常重要的目录:

  • /lost+found:使用标准的ext2/ext3文件系统格式才会产生的一个目录,目的在于当文件系统发生错误时,将一些丢失的片段放置在这个目录下。
  • /proc:一个虚拟文件系统,它放置的数据都是在内存当中,例如系统内核、进程、外部设备状态网络状态等,不占用任何硬盘空间。
  • /sys:类似于/proc,不占用硬盘空间。

注意:根目录与开机有关,开机过程中仅有根目录会被挂载,其他分区则是在开机完成之后才会持续进行挂载的行为。因为如此,根目录下与开机有关的目录就不能放置在不同的分区,有以下这些:

  • /etc:配置文件
  • /bin:重要执行文件
  • /dev:所需要的设备文件
  • /lib:执行文件所需的函数库与内核所需的模块
  • /sbin:重要的系统执行文件