Linux的文件层次结构

163 阅读6分钟

文件层次结构是存储设备中的文件组织,如硬盘、SSD等,在这篇文章中我们讨论了Linux操作系统的文件层次结构。

本文将讨论Linux操作系统的文件层次结构

  1. 简介
  2. 二进制文件
  3. 配置目录
  4. 数据目录
  5. 内存目录
  6. 变量目录
  7. 系统资源
  8. 非标准目录
  9. 总结
  10. 参考资料

引言

Linux操作系统有一个分层的文件结构。FHS(文件系统分层标准)定义了Linux操作系统的目录结构及其内容。

标准的Linux命令、目录、用户、应用程序、内核、库、临时文件都包含在文件层次结构中,使操作系统能够正常运行。
这个结构是以树的形式出现的,要查看这个结构,我们可以导航到根目录'cd / & ls',或者用图形化的方式查看,我们可以使用树形工具,可以按以下方式安装。

蝶变或Ubuntu

sudo apt install tree

Fedora或Redhat

sudo dnf install tree

安装后,改变目录到根目录,cd /,然后输入树状命令。

tree-1

二进制文件

二进制文件包含已编译的源代码,也称为可执行文件,因为它们可以被执行。

二进制文件的目录是:

  • /bin 存储终端的核心工具和命令,如cat, chmod, chown, df, echo, ls, mkdir, pwd, rm, rmdir, kill, uname等等。
  • /sbin这与bin类似,例外的是,它专门用于只能由超级用户或根用户执行的命令。它们包括:fsck、halt、mkfs、mkswap、reboot、route、swapoff、swapon等等。
  • /lib它存储了程序运行所需的库。库可以在不同的程序之间共享,这也是为什么Linux安装是轻便的主要原因。
  • /opt存储不被Linux发行包管理器管理的可选软件。也就是说,它将存储来自个别供应商的附加应用程序。

配置目录

这些目录将存储配置文件,这些文件负责配置计算机程序的参数和初始设置。

它们包括。

*/boot。*这将存储所有需要启动的文件。建议不要修改这个目录,因为如果配置不正确,会导致启动问题。

/etc。这个目录负责存储影响所有系统用户的配置文件。它主要包含静态程序的本地文件。这个文件夹的备份是必不可少的,因为它将在重新安装时为我们节省大量的配置。子目录的一个例子是/etc/init.d,它存放控制系统或启动和停止守护程序的脚本。

数据目录。

顾名思义,这些目录存储系统数据,这里的目录包括:
*/home。*这个目录将存储所有用户的数据,因为大部分时间都是在这里度过的。子目录如桌面、文档、下载、照片都存储在这里。

这个目录还包含个人配置文件dot-files,因为它们是隐藏的。当个人配置文件和系统配置文件之间发生冲突时,个人配置将被继承:

  • */root。这是系统管理员或根用户的主目录。注意,/*目录与此目录不同。
  • */srv。*它负责存储服务的数据,例如,目前在系统上运行的www,ftp。
  • /media。这是一个提供外部设备(如光驱、USB)挂载的地方的目录。它在不同的Linux发行版中可能有所不同。它是由操作系统管理的,如果你需要手动挂载设备,/mnt目录可以达到这个目的。
  • /mnt。这是一个占位符目录,用来存放其他挂载的文件夹或驱动器,如外部硬盘、软盘或USB。/media目录由操作系统管理,可以用来代替它,但是*/mnt*也可以用来手动安装设备。
  • *临时文件。*运行中的应用程序的临时文件存储在这里,与windows操作系统不同,它们通常在关机时被删除。存储在这里的数据可以使用磁盘空间或RAM。

内存目录

这些目录包含整个系统的文件,文件中存储的信息包括设备信息、进程数据和所有与系统有关的信息。

子目录包括。

  • /dev:物理设备,如HDD、USB、光驱都挂在这里。也就是说,系统的HDD可能被挂载在/dev/sda上,而外部USB可能被挂载在*/dev/sde/上,也可能存在不同的分区,即/dev/sda1*、/dev/sda2/
  • */proc:*这是进程目录,系统信息以文件形式表示。它作为内核与系统中运行的进程进行通信的一种方式。它也可以被看作是一个虚拟文件系统,因为它只包含运行时的系统信息(不是 "真正的 "文件)。
  • */sys。这是一个像/dev/*一样的虚拟目录,在启动时创建。它保存了与所有连接设备有关的所有信息。

变量目录。

这里的目录是var目录,用来存储所有变量数据,即系统日志。这里的文件和文件夹预计会随着时间的推移和系统的使用而增加。

这里的一些子目录包括:

  • */var/log。*这将包含所有的日志文件。
  • /var/lib。 包含状态信息即数据库的文件存储在这里。
  • */var/cache。*存储所有来自应用程序的缓存数据,通常由I/O或计算产生。这里的文件可以被删除而不会有任何数据损失。
  • */var/spool。*这里存储等待处理的文件,如邮件队列。

系统资源

这里唯一的目录是*/usr*(unix系统资源),它将拥有用户之间共享的所有文件和工具。它将有自己的/bin、/sbin/和/lib目录,与sudoer的目录不同。

/usr的子目录有:

  • */usr/bin:*包含用户的非重要的全局二进制命令。
  • /usr/lib:它有usr/bin、/usr/sbin的所有二进制文件,不直接由用户执行。
  • */usr/include:*它包含了所有标准的C语言包含文件。
  • */usr/share。*其中包含共享数据。
  • /usr*/local:*从源代码安装的程序存放在这里。
  • /*usr/src:*存放源代码,如内核源代码及其头文件。

非标准目录

这些目录不包括在FHS中,它们包括。

  • /cdrom:安装可以发生在*/media*目录中,然而,cdrom也可以安装在这里。
  • */run。*运行时变量数据,即上次启动后的系统数据,存储在这里。
  • /lost+found。当系统发生错误时,例如崩溃,由fsck(文件系统检查器)恢复的丢失的数据就存储在这里。它可能被破坏,也可能不被破坏。

摘要

Linux文件层次标准负责定义目录结构和内容,它由Linux基金会维护。

请记住,在UNIX/Linux系统中,所有的东西都是一个文件,否则它就是一个进程。