Linux 文件系统遵循由文件系统层次结构标准 (FHS) 管理的树状层次结构布局。这是 Linux 基金会维护的标准。在撰写本指南时,FHS 的最新版本是 2015 年 6 月发布的 3.0.3 版。
Linux 文件系统结构从最顶层开始,根目录是层次结构中的最上层目录。它包含系统上的所有目录和子目录,我们将在本指南后面看到。
为了更好地了解这一点,导航到根目录/并运行以下命令:
tree -D -L 1
输出提供了驻留在系统上的所有主要目录。在深入研究每个目录包含的内容之前,让我们简要了解一下 Linux 系统上的主要文件类型。
Linux 中的文件类型
在 Linux 和 UNIX 系统中,一切都被视为一个文件。如果不是,那么它是一个正在运行的过程。通常,Linux 中的所有文件都属于这三类之一。
- 常规文件:包括文本文件、照片、视频、程序和可执行文件。
- 目录:这听起来可能有点奇怪,但在 Linux 中,目录也被视为文件,因为它们为其他文件和子目录提供存储空间。
- 特殊文件:这些是包含符号链接、块文件、套接字文件和命名管道文件的设备文件。
也就是说,现在让我们更详细地检查 Linux 文件系统树。
/ ( 根目录)
如前所述,根目录由单个正斜杠 ( / ) 表示,是 Linux 层次结构中的最顶层目录。Linux 系统上的所有文件和文件夹都存储在这里,并且可以从这个目录中引用,即使存储在不同的位置,例如可移动或虚拟设备。
笔记:
不要将根 (/) 目录与根主目录 (/root) 混淆。
/家
该/home目录是包含用户个人文件的目录。该目录是 Linux 系统上任何登录用户的入口点。它存储特定于单个用户的文件夹、文件和个人数据。
目录中的文件夹采用登录用户名的/home形式。例如,如果我们有一个名为 mike 的登录用户,则该用户的主目录将为./home/USERNAMEUSERNAME/home/mike
目录内/home/USERNAME还有其他子目录,例如 Desktop、Downloads、Documents、Pictures、Videos、Templates、Public 和 Music,如下所示。
此外,主目录包含个性化配置文件,这些文件是隐藏文件,前面有一个点。此类文件包括.bashrc,.bash_logout,等等.bash_profile。
要查看隐藏文件,请使用如图所示的选项运行ls命令。-la
ls -la
/根
这是 root 帐户的主目录,也称为 root 用户的主目录。该/root目录存储 root 帐户的配置文件的方式与每个普通用户的主目录包含该用户的配置文件和常规文件的方式相同。
/引导
另一个关键目录是/boot目录。顾名思义,该目录包含成功引导系统所需的基本文件。这些文件包括 grub 引导加载程序文件、根文件系统文件、Linux 内核文件 (vmlinuz) 和其他引导配置文件。
/垃圾桶
该/bin目录包含二进制可执行文件或 Linux 程序。其中包括在单用户模式下可供所有用户使用的常用 Linux 命令。其中包括 cat、chown、chmod、ping、cp、mkdir、ls、cat、rm 和 mv,仅举几例。
要确认二进制可执行文件或命令(例如cp命令)的路径,请运行命令:
which cp
/sbin
与/bin 目录不同,/sbin目录包含为根用户保留的二进制可执行文件和命令行工具。这些是用于系统管理任务的特权命令。此类命令的示例包括 fdisk、route、reboot、mkfs、init 和 fsck 等等。同样,要确认二进制可执行文件的路径,请运行which命令,然后运行二进制可执行文件。
which reboot
/开发
该/dev目录包含代表连接到系统的设备的特殊文件。这些包括控制台、硬盘驱动器或插入系统的任何其他外围设备。设备文件的一个很好的例子是/dev/sda它表示连接到 Linux 系统的第一个 SATA 硬盘驱动器。
该/dev目录也是不引用任何连接到系统的硬件的伪设备或虚拟设备的存储位置。一个示例是/dev/null丢弃发送给它的任何数据的文件。
/ETC
该/etc目录包含特定于主机的系统范围配置文件。它存储所有程序所需的配置文件以及启动和关闭 shell 脚本。root 或 sudo 用户可以使用 nano 或 vim 等文本编辑器修改配置文件,sudo 用户是具有运行某些 root 命令的提升权限的普通用户。
/lib,/lib64
/bin/lib 目录包含或目录中所需的共享库图像/sbin。这些是系统正常启动和运行所需的基本库。
/媒体
该/media目录包含临时子目录,可移动媒体(如光盘驱动器)会自动安装在这些目录上。子目录的一个很好的例子是/media/cdrom光驱。
/mnt
该/mnt目录提供了一个临时挂载点,可在其上挂载可移动媒体(如 CDROM)。它最常用于手动挂载存储设备或分区,更像是过去的遗物。
/tmp
在 Linux 系统上,临时文件存储在该/tmp 目录中。这些是由系统和用户创建的临时文件。此目录中的文件通常有几千字节大小,并且在大多数情况下会在系统重新启动时被删除。
/选择
该/opt目录包含第三方供应商提供的附加应用程序或软件包,它们不是通过您的操作系统包管理器安装的。每个这样的应用程序都有自己的子目录,其中包含它运行所需的所有基本文件。当您从第三方存储库安装软件包或自行编译软件二进制文件时,文件将存储在该/opt目录中。
/曾是
Var 代表变量。顾名思义,该 /var目录是一个包含大小不断变化的文件的目录,例如日志和假脱机文件。
以下是该目录中包含的重要/var 目录的列表:
- /var/log - 包含系统和应用程序日志文件。
- /var/cache - 包含来自程序的缓存数据。
- /var/mail - 包含用户的邮箱
- /var/spool- 包括各种程序的排队或假脱机文件。
- /var/spool/cron- 包含用于 cron 作业的假脱机文件。
- /var/spool/at- 包含 at 的假脱机作业。
- /var/spool/lpd- 包含用于打印的假脱机文件。
- /var/opt- 包含/opt目录的可变数据文件。
/跑
大多数 Linux 发行版都带有/run文件系统。这是一个目录,用于存储自系统启动以来易失性运行时数据。存储在此目录中的数据不会在重新启动后保留。
/进程
也称为 proc 文件系统,该/proc目录是一个虚拟或伪文件系统,其中包含提供有关正在运行的进程和内核当前状态的信息的特殊文件。它被视为Linux内核的信息和控制中心。
proc 目录是一个特殊的目录,因为它不是真正的文件系统,一旦系统断电,它就不存在了。它/proc在引导过程中安装在安装点。
/usr
这是 Linux 系统中最关键的目录之一。该/usr目录是包含已安装软件应用程序的库、二进制文件和文档的目录。此目录中包含的系统文件可在其他用户之间共享。
一目了然,以下是该目录中包含的一些重要子目录/usr:
- /usr/bin- 这包含在目录下找不到的用户程序的二进制文件/bin。此类程序的示例包括 less、more、scp 和 awk 等等。
- /usr/sbin - 这为系统管理员或特权用户提供了二进制文件。通常,系统二进制文件位于该/sbin目录中,但如果您在那里找不到它们,请在该/sbin目录下查找。
- /usr/local- 该目录包含从源代码或发行版提供的软件之外安装的用户程序。例如,当您从源代码安装 Go 编程语言时,它位于该/usr/local/go目录下。
- /usr/lib- 这提供了/usr/bin和/usr/sbin目录所需的库。
- /usr/src- 这包含 Linux 头文件、内核源代码和文档。
/srv(服务目录)
术语 srv 代表服务。该/srv目录包含 Linux 发行版的站点特定数据。它指向特定服务(如 www、rsync、FTP 和 CVS)的数据文件的位置。
/系统
这是一个虚拟或伪文件系统,包含一组附加到 Linux 内核的虚拟文件。
/折断
这是快照包进入的地方。Snap 是由 Ubuntu 的发布者和维护者 Canonical 开发的包管理系统。Snaps 是容器化的、交叉分发的软件包,与所有依赖项一起打包。它们易于安装,适用于所有启用了快照的主要 Linux 发行版。
如果您从 snap 包安装了应用程序,那么所有软件文件都将在该/snap目录中找到。
/丢失+找到
这是一个主要在 Ubuntu 和基于 Ubuntu 的发行版中找到的目录。这是一个包含过时数据的特殊目录。这些是在磁盘操作期间已被删除或丢失的文件片段。
结论
在本指南中,我们检查了 Linux 文件系统树并充实了构成文件系统层次结构的目录。Linux 文件文件系统层次结构确保了各种 Linux 系统之间的一致性,并为 Linux 管理员和开发人员提供了一个标准的目录结构,使管理系统变得容易。