如何理解文件系统布局在Linux VPS

介绍

如果你是Linux和类Unix操作系统的新手,与操作系统交互和导航的基本方法看起来很复杂和混乱。 新用户所努力的一个领域是如何理解文件系统的结构。

在本文中,我们将讨论标准Linux文件系统的各个部分。 我们将探讨一些最有趣的目录以及在服务器环境中寻找各种组件的位置。

为了演示的目的,我们将使用Ubuntu 12.04服务器。 其他Linux发行版以略有不同的方式实现事物,因此如果您遵循并注意到与您自己的系统的差异,请检查您的发行版文档。

关于Linux文件系统布局的历史的一些简要说明

Linux继承了其Unix前身的许多文件系统组织概念。 早在1979年,Unix正在建立标准来控制合规系统如何组织其文件。

Linux文件系统层次标准(简称为FHS)是由Linux基金会维护的规范性标准,确立了Linux发行版应该支持的互操作性,易于管理和可靠地实现跨发行版应用程序的能力的组织布局。

在处理这些系统时要提到的一件重要的事情是,Linux将所有内容都作为一个文件来实现。 这意味着文本文件是文件,目录是文件(仅仅是其他文件的列表),打印机由文件表示(设备驱动程序可以将写入打印机文件的任何东西发送到物理打印机)等等。

虽然这在某些情况下过于简单,但它告诉我们系统的设计者鼓励的方法:来回传递文本和字节,并且能够应用类似的策略来编辑和访问不同的组件。

在这篇文章中,我们不会完全遵循规范,因为分布经常偏离实际标准。 相反,我们将检查Ubuntu 12.04服务器以找到实现的实际目录结构。 这对普通用户更有用。

简单导航

在实际深入到文件系统布局之前,你需要知道一些关于如何从命令行浏览文件系统的基础知识。 我们将在这里覆盖最低限度,让你在你的脚。

东方自己

你需要做的第一件事是将自己定位在文件系统中。 有几个方法可以做到这一点,但最基本的一种是与pwd命令,它代表“打印工作目录”:

pwd
/root

这简单地返回您当前所在的目录。我们将学习如何解释结果。

环视四周

要看到的是在当前目录中哪些文件,可以发出ls命令,它的全称是“清单”:

ls
bin   etc         lib         mnt   root  selinux  tmp  vmlinuz
boot  home        lost+found  opt   run   srv      usr
dev   initrd.img  media       proc  sbin  sys      var

这将告诉您当前目录中的所有目录和文件。

ls命令可以采取一些可选标志。 标志修改命令的默认行为,以不同的方式处理或显示数据。

举例来说,如果我们想通过展示“/”目录条目后,可以添加的文件和目录之间很容易区分-F标志:

ls -F
bin/   home/        media/  root/     srv/  var/
boot/  initrd.img@  mnt/    run/      sys/  vmlinuz@
dev/   lib/         opt/    sbin/     tmp/
etc/   lost+found/  proc/   selinux/  usr/

两种最常见的标志是可能的-l-a 第一个标志强制命令以长格式输出信息:

ls -l
total 76
drwxr-xr-x  2 root root  4096 Apr 26  2012 bin
drwxr-xr-x  3 root root  4096 Apr 26  2012 boot
drwxr-xr-x 13 root root  3900 Dec  4 18:03 dev
drwxr-xr-x 78 root root  4096 Dec  4 19:29 etc
drwxr-xr-x  3 root root  4096 Dec  4 19:28 home
lrwxrwxrwx  1 root root    33 Apr 26  2012 initrd.img -> /boot/initrd.img-3.2.0-24-virtual
drwxr-xr-x 16 root root  4096 Apr 26  2012 lib
. . .

这将为每个文件或目录生成一行输出(名称位于最右侧)。 这有很多信息,我们现在不感兴趣。 一部分我们感兴趣的虽然是第一个字符,它告诉我们它是什么类型的文件。 三种最常见的类型是:

  • - :普通文件
  • D:指南(该目录的其它文件的特定格式的文件)
  • L:硬或软链接(基本上是一个快捷方式到其他文件系统上)

-a标志列出所有文件,包括隐藏文件。 在Linux中,如果文件以点开头,则会自动隐藏:

ls -a
.  ..  .bash_logout  .bashrc  .profile

在此示例中,所有文件都被隐藏。 前两个项目, ...是特殊的。 .目录是一个捷径,这意味着“当前目录”。 ..目录是一个捷径,这意味着“当前目录的父目录”。 我们将学习一些方法来利用这些只是一瞬间。

四处走走

现在你可以找到你在文件系统中的位置,看看你周围有什么,现在是时候学习如何在整个文件系统中移动。

要切换到不同的目录,您发出cd命令,它代表“更改目录”:

cd /bin

您可以使用绝对路径名或相对路径名跟随该命令。

绝对路径是指定从在目录树的顶部的目录的位置的文件路径(我们将在后面解释)。 绝对路径以“/”开头,如上所示。

相对路径是相对于当前工作目录的文件路径。 这意味着,不是从目录结构的顶部定义位置,而是定义与当前位置相关的位置。

举例来说,如果要移动到当前目录中称为一个目录documents ,可以发出以下命令:

cd documents

从开头缺少“/”表示使用当前目录作为查找路径的基础。

这就是..目录就派上用场了。 要移动到当前目录的父目录,您可以键入:

cd ..

Linux文件系统布局概述

在查看Linux文件系统时,您需要知道的第一件事是,文件系统包含在单个树中,而不管合并了多少个设备。

这意味着操作系统可访问的所有组件都表示在主文件系统中的某处。 如果您使用Windows作为主操作系统,这与您使用的不同。 在Windows中,每个硬盘驱动器或存储空间都表示为其自己的文件系统,这些文件系统标有字母标识(C:作为系统文件层次结构的标准顶级目录,其他驱动器或存储空间被赋予其他
字母标签)。

在Linux中,系统上的每个文件和设备驻留在“root”目录下,由“/”开头表示。

注意:这与默认管理用户(也称为“root”)不同。 它也不同于默认管理用户的主目录,它位于“/ root”。

因此,如果我们要去整个操作系统的顶级目录,看看有什么,我们可以键入:

cd /
ls
bin   etc         lib         mnt   root  selinux  tmp  vmlinuz
boot  home        lost+found  opt   run   srv      usr
dev   initrd.img  media       proc  sbin  sys      var

每个文件,设备,目录或应用程序都位于此一个目录下。 在这里,我们可以看到目录结构的其余部分的开始。 我们将在下面详细介绍:

/ bin

此目录包含在引导时实现最低工作环境所需的基本命令和程序。 这些与系统上的一些其他程序保持分离,以允许您引导系统进行维护,即使文件系统的其他部分可能已损坏或不可用。

如果你搜索这个目录,你会发现这两个lspwd居住在这里。 cd命令实际上是内置到我们使用(bash)的外壳,这是在这个目录下了。

/ boot

此目录包含引导系统所需的实际文件,映像和内核。 尽管/bin包含了基本的,必备的实用工具, /boot包含核心组件,实际上让系统引导。

如果你需要修改系统上的bootloader,或者你想看到实际的内核文件和初始ramdisk(initrd),你可以在这里找到它们。 此目录必须在系统早期可访问。

/ dev

此目录包含表示系统上设备的文件。 系统可用的每个硬盘驱动器,终端设备,输入或输出设备都由此处的文件表示。 根据设备,您可以以不同的方式在设备上操作。

例如,对于代表一个硬盘驱动器,如设备/dev/sda ,你可以将其安装到文件系统的访问。 在另一方面,如果你有一个代表像行式打印机的文件/dev/lpr ,您可以直接写信给它来将信息发送到打印机。

/等等

这是文件系统的一个区域,如果您是系统管理员,您将花费大量的时间。 此目录基本上是用于各种系统范围服务的配置目录。

默认情况下,此目录包含许多文件和子目录。 它包含系统上大多数活动的配置文件,而不考虑它们的功能。 在需要多个配置文件的情况下,很多时候会创建一个特定于应用程序的子目录来保存这些文件。 如果您尝试为整个系统配置服务或程序,这是一个很好的地方。

/家

此位置包含系统上所有用户的主目录(管理用户除外,root)。 如果您已创建其他用户,则通常将在此目录下创建与其用户名匹配的目录。

在每个主目录内,相关联的用户具有写访问权限。 通常,常规用户只能对自己的主目录具有写访问权限。 这有助于保持文件系统的清洁,并确保不只是任何人都可以更改重要的配置文件。

在主目录中,通常是隐藏的文件和目录(由起始点表示),允许用户特定的工具配置。 通常,您可以设置系统默认的/etc目录下,然后每个用户都可以在他们自己的主目录需要重写。

/ lib

此目录是用于所有由该所需的共享系统库/bin/sbin的目录。 这些文件基本上向系统上的其他程序提供功能。 这是您不必经常访问的目录之一。

/ lost + found

这是一个包含恢复的文件一个特殊的目录/fsck ,Linux文件系统修复方案。 如果文件系统损坏并进行恢复,有时找到文件,但是丢失了对它们的位置的引用。 在这种情况下,系统会将它们放在此目录中。

在大多数情况下,此目录将保持为空。 如果您遇到损坏或任何类似的问题,并被迫执行恢复操作,它总是一个好主意,在完成后检查此位置。

/媒体

此目录在引导时通常为空。 它的真正目的只是提供一个位置来安装可移动媒体(如cds)。 在服务器环境中,这在大多数情况下不会使用。 但是如果你的Linux操作系统安装了一个媒体磁盘,你不知道它放在哪里,这是一个安全的赌注。

/ mnt

该目录类似于/media ,它的存在只是为了作为一个组织的挂载点的设备目录。 在这种情况下,此位置通常用于安装像外部硬盘驱动器等文件系统。

此目录通常在VPS环境中用于安装网络可访问驱动器。 如果您在远程系统上有一个文件系统要安装在服务器上,这是一个很好的地方。

/选择

此目录的用法相当不明确。 它被一些分布使用,但被其他人忽略。 通常,它用于存储可选软件包。 在Linux发行版中,这通常意味着不是从存储库安装的软件包和应用程序。

例如,如果您的发行版通常通过软件包管理器提供软件包,但是从源代码安装了程序X,则该目录将是该软件的一个很好的位置。 对于这种性质的软件,另一种流行的选择是在/usr/local目录中。

/ proc

/proc目录实际上是比只是一个普通的目录多。 它实际上是一个伪文件系统,它自己挂载到该目录。 proc文件系统不包含真实文件,而是动态生成以反映Linux内核的内部状态。

这意味着我们可以实时检查和修改内核自身的不同信息。 例如,您可以键入有关内存使用的详细信息cat /proc/meminfo

/根

这是管理用户的主目录(称为“root”)。 它的功能与正常的主目录完全相同,但是放在这里。

/跑

此目录用于操作系统在引导过程的早期阶段写入临时运行时信息。 一般来说,你不必担心这个目录中的大部分信息。

/ sbin

此目录是很像/bin在于它含有节目当作用于使用操作系统必需的目录。 的区别通常是/sbin包含了可用于系统管理员的命令,而其他目录包含所有的系统用户的节目。

/ selinux

此目录包含涉及安全增强型Linux的信息。 这是一个内核模块,用于为操作系统提供访问控制。 在大多数情况下,您可以忽略此。

/ srv

此目录用于包含计算机提供的服务的数据文件。 在大多数情况下,此目录不会使用太多,因为其功能可以在文件系统的其他位置实现。

/ tmp

这是用于在系统上存储临时文件的目录。 它可以由计算机上的任何人写入,并且不会在重新启动时持久。 这意味着您只需要一点点的任何文件可以放在这里。 一旦系统关闭,它们将自动删除。

/ usr

此目录是系统上最大的目录之一。 它基本上包括一组文件夹是类似于那些在根/目录,如/usr/bin/usr/lib 这个位置基本上用于存储所有非必要的程序,它们的文档,库和其他对系统最少使用不需要的数据。

这是系统上的大多数文件将被存储的地方。 一些重要的子目录/usr/local ,这对替代/opt在本地存储编译的程序目录。 检查出另一个有趣的事情是/usr/share目录,其中包含的文件,配置文件和其他有用的文件。

/ var

这个目录应该包含变量数据。 在实践中,这意味着它用于包含您希望随着系统的使用而增长的信息或目录。

例如,系统日志和备份位于此处。 此目录的另一个流行使用是存储Web内容,如果您正在操作Web服务器。

结论

虽然存储地点的细节可能因发行版和发行版而有所不同,一般来说,我们讨论的地点应该指向正确的方向。

探索文件系统的最好方法是遍历各个目录,并尝试找出里面的文件是什么。 您将开始能够将不同的目录与不同的功能相关联,并且能够猜测到哪里去执行特定的任务。 如果您想要快速参考每个目录的用途,您可以通过键入以下内容使用内置手册页:

man hier

这将给您一个典型的文件系统布局和每个位置的目的的概述。

作者:Justin Ellingwood
赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏