介绍
如果你是新手Linux和Unix类型的操作系统,与操作系统互动和导航的基本方式可能看起来很复杂和困惑,一个新用户挣扎的领域是如何理解文件系统的结构。
在本文中,我们将讨论标准Linux文件系统的各个部分,我们将探索一些最有趣的目录,以及在您的服务器环境中寻找各种组件的地方。
为了演示目的,我们将使用Ubuntu 12.04服务器. 其他Linux发行版以略有不同的方式实现事情,所以如果你跟随并注意到与你自己的系统的差异,请检查你的发行版的文档。
关于 Linux 文件系统布局的历史的一些简短注意事项
Linux 继承了其许多文件系统组织概念,直到 1979 年,Unix 一直在制定标准来控制合规系统如何组织其文件。
Linux 文件系统等级标准(简称 FHS)是 Linux 基金会维护的规定标准,它建立了 Linux 发行版应该维护的组织布局,以实现互操作性、易于管理和可靠地实现跨区域应用程序的能力。
在处理这些系统时要提到的一件重要事情是,Linux几乎把一切都实现为文件,这意味着文本文件是一个文件,目录是一个文件(只是其他文件的列表),打印机是一个文件(设备驱动程序可以将任何东西写到打印机文件到物理打印机),等等。
虽然这在某些情况下过于简化,但它告诉我们系统设计师鼓励的方法:传输文本和字节,并能够应用类似的策略来编辑和访问各种组件。
在本文中,我们不会准确地遵循规格,因为发行版往往会偏离实际的标准,相反,我们会检查Ubuntu 12.04服务器以找到实际的目录结构。
简单导航
在真正深入到文件系统布局之前,您需要知道如何从命令行导航文件系统的一些基本知识,我们将涵盖这里的最低限度,以便您站起来。
东方自己
你需要做的第一件事是把自己定位在文件系统中,有几种方法可以做到这一点,但最基本的方法之一是使用pwd
命令,即打印工作目录
:
1pwd
1/root
这只会返回您目前所处的目录,我们将学习如何对结果进行解释。
看看周围
要查看当前目录中的文件,您可以发出ls
命令,即列表
:
1ls
1bin etc lib mnt root selinux tmp vmlinuz
2boot home lost+found opt run srv usr
3dev initrd.img media proc sbin sys var
这将告诉您当前目录中的所有目录和文件。
Flags 可以修改命令的默认行为,以处理或以不同的方式显示数据。
例如,如果我们想通过在目录输入后显示/
来轻松区分文件和目录,则可以添加-F
旗:
1ls -F
1bin/ home/ media/ root/ srv/ var/
2boot/ initrd.img@ mnt/ run/ sys/ vmlinuz@
3dev/ lib/ opt/ sbin/ tmp/
4etc/ lost+found/ proc/ selinux/ usr/
最常见的两个旗帜是可能的-l
和-a
第一个旗帜强迫命令以长形式输出信息:
1ls -l
1total 76
2drwxr-xr-x 2 root root 4096 Apr 26 2012 bin
3drwxr-xr-x 3 root root 4096 Apr 26 2012 boot
4drwxr-xr-x 13 root root 3900 Dec 4 18:03 dev
5drwxr-xr-x 78 root root 4096 Dec 4 19:29 etc
6drwxr-xr-x 3 root root 4096 Dec 4 19:28 home
7lrwxrwxrwx 1 root root 33 Apr 26 2012 initrd.img -> /boot/initrd.img-3.2.0-24-virtual
8drwxr-xr-x 16 root root 4096 Apr 26 2012 lib
9. . .
这为每个文件或目录产生一个行输出(名称在右边)。这有很多信息,我们目前不感兴趣。我们感兴趣的一部分是第一个字符,这告诉我们它是什么类型的文件。
- -:常规文件
- d:目录(列出其他文件的特定格式的文件)
- l:硬或软链接(基本上是系统上的另一个文件的缩略)
a
旗列出了所有文件,包括隐藏的文件,在Linux中,如果它们从点开始,则会自动隐藏文件:
1ls -a
1. .. .bash_logout .bashrc .profile
在本示例中,所有文件都隐藏了,前两个条目, .
和 .
是特殊的, .
目录是指当前目录
的缩略, .
目录是指当前目录的母目录
。
移动周围
现在你可以找出你在文件系统中的位置,并看到你周围的内容,是时候学习如何在整个文件系统中移动。
要更改到另一个目录,您发出cd
命令,即更改目录
:
1cd /bin
您可以按照命令使用绝对或相对路径名。
一个 绝对路径是一个文件路径,它指定了目录从目录树顶部的位置(我们将稍后解释)。
相对路径是一个与当前工作目录相对的文件路径,这意味着,而不是从目录结构的顶部定义一个位置,它定义了与当前位置有关的位置。
例如,如果要移动到当前目录中的名为文档
的目录,则可以发出以下命令:
1cd documents
从一开始就缺少/
意味着要使用当前目录作为搜索路径的基础。
这是在那里 ..
目录是方便的. 要移动到当前目录的母目录,您可以键入:
1cd ..
Linux 文件系统布局的概述
当你查看Linux文件系统时,你需要知道的第一件事是,该文件系统包含在一个单一的树中,不管有多少设备被嵌入。
如果您使用 Windows 作为您的主要操作系统,这与您所习惯的不同。在 Windows 中,每个硬盘或存储空间都被表示为其自己的文件系统,这些文件被标记为字母标记(C:是系统文件等级的标准顶级目录,并提供其他字母标签的额外驱动器或存储空间)。
在Linux中,系统上的每个文件和设备都位于根
目录下,该目录被标记为开始/
。
注意:这与默认管理用户(也称为root
)不同,它也与默认管理用户的主目录(位于/root
)不同。
因此,如果我们想进入整个操作系统的顶级目录并看到它在那里,我们可以键入:
1cd /
2ls
1bin etc lib mnt root selinux tmp vmlinuz
2boot home lost+found opt run srv usr
3dev initrd.img media proc sbin sys var
每个文件,设备,目录或应用程序都位于这个单一目录下,下面我们可以看到其余目录结构的开端。
/ 金
该目录包含基本命令和程序,以便在启动时达到最小的工作环境,这些命令和程序与系统上的其他一些程序保持分开,以便您能够启动系统进行维护,即使文件系统的其他部分可能受损或不可用。
如果你搜索这个目录,你会发现ls
和pwd
都住在这里. cd
命令实际上是嵌入我们正在使用的壳(bash),它也在这个目录中。
/ 船
该目录包含启动系统所需的实际文件、图像和内核,而/bin
包含基本的基本实用工具,而/boot
包含实际启动系统的核心组件。
如果你需要修改系统上的启动器,或者如果你想看到实际的内核文件和初始的 ramdisk (initrd),你可以在这里找到它们。
/ Dev
此目录包含代表系统上的设备的文件. 系统可用的每个硬盘,终端设备,输入或输出设备都由一个文件来表示。
例如,对于代表硬盘的设备,例如 /dev/sda’,您可以将其安装在文件系统中,以便访问它;另一方面,如果您有代表线程打印机的文件,例如
/dev/lpr’,您可以直接写入它以将信息发送到打印机。
等
这是文件系统的一个区域,如果您作为系统管理员工作,您将花费大量时间在其中,本目录基本上是各种系统服务的配置目录。
默认情况下,该目录包含许多文件和子目录. 它包含系统上大多数活动的配置文件,无论其功能如何。 在需要多个配置文件的情况下,经常创建一个应用程序特定的子目录来存储这些文件。
/ 家
此位置包含系统上的所有用户的主目录(管理用户, root 除外)。如果您创建了其他用户,则通常会在该目录下创建一个匹配其用户名的目录。
在每个主目录中,相关用户都有写入访问权限. 通常情况下,常规用户只有写入自己的主目录。 这有助于保持文件系统的清洁,并确保不只是任何人都可以更改重要的配置文件。
在主目录中,这通常是隐藏的文件和目录(由起始点表示),允许用户特定的工具配置. 您通常可以在/etc
目录中设置系统默认值,然后每个用户可以根据需要在自己的主目录中对其进行排序。
利比
此目录用于所有所需的 /bin
和 /sbin
目录的共享系统库. 这些文件基本上为系统上的其他程序提供功能。
丢失 + 发现
这是一个特殊的目录,其中包含了由 Linux 文件系统修复程序 /fsck
恢复的文件. 如果文件系统损坏并进行恢复,有时会找到文件,但丢失了其位置的参考。
在大多数情况下,此目录将保持空白. 如果您遇到腐败或任何类似的问题,并被迫执行恢复操作,在您完成后,始终检查此位置是一个好主意。
/ 媒体
该目录通常在启动时是空的,其真正的目的是仅仅提供一个位置来安装可移除的媒体(如CD)。在服务器环境中,这不会在大多数情况下被使用,但如果您的Linux操作系统安装了一个媒体磁盘,而您不确定它放在哪里,这是一个安全的赌注。
百度
该目录类似于/media
目录,因为它只存在于作为设备的组织安装点,在这种情况下,这个位置通常用于安装文件系统,如外部硬盘驱动器等。
此目录通常在VPS环境中用于安装可访问的网络驱动器. 如果您在远程系统上有文件系统,您希望将其安装到您的服务器上,这是一个很好的地方。
/ 八
该目录的使用是相当模糊的. 它被一些发行版使用,但被其他人忽略. 通常,它被用来存储可选软件包. 在Linux发行版世界中,这通常意味着从库中没有安装的软件包和应用程序。
例如,如果您的分布通常通过包管理器提供包,但您从源头安装了程序X,那么此目录将是该软件的一个很好的位置。
百度
该/proc
目录实际上不仅仅是一个常规目录,它实际上是一个伪文件系统,它被安装在该目录中,proc文件系统不包含真正的文件,而是动态生成以反映Linux内核的内部状态。
这意味着我们可以实时检查和修改内核本身的不同信息,例如,您可以通过键入cat /proc/meminfo
来获取有关内存使用的详细信息。
/ 根
这是管理员用户的首页目录(称为根
)。它就像正常的首页目录一样运行,但它是在这里托管的。
/ 跑
此目录用于操作系统在启动过程的早期阶段写出临时运行时间信息,一般来说,您不应该担心该目录中的许多信息。
斯宾
该目录类似于/bin
目录,因为它包含用于操作系统的必要程序,而区别通常是/sbin
包含系统管理员可用的命令,而另一个目录则包含系统所有用户的程序。
/ 塞利诺
该目录包含涉及安全增强Linux的信息. 这是一个内核模块,用于为操作系统提供访问控制。
/ SRV
此目录用于包含计算机提供的服务的数据文件. 在大多数情况下,此目录不会被过度使用,因为其功能可以在文件系统中的其他地方实现。
/ tmp
这是一个用于存储系统上的临时文件的目录. 它可以由计算机上的任何人编写,并且在重新启动时不会持续。 这意味着您只需要一段时间的任何文件都可以在这里放置。
欧美
该目录是系统上最大的目录之一,基本上包含一组类似于 root 目录中的文件夹,如 /usr/bin
和 /usr/lib
。
这就是系统上的大多数文件将被存储的地方。一些重要的子目录是/usr/local
,这是一个替代/opt
目录来存储本地编译的程序。
曾
在实践中,这意味着它被用来包含信息或目录,您预计随着系统的使用而增长。
例如,系统日志和备份在这里存储,此目录的另一个常见用途是存储Web内容,如果您正在运行Web服务器。
结论
虽然物品存储地点的细节可能因分配而异,但总的来说,我们讨论的位置应该引导您朝正确的方向前进。
探索文件系统的最佳方法是简单地穿过各种目录并尝试找出内部文件的用途。你将开始能够将不同的目录与不同的功能相关联,并能够猜测具体任务要去哪里。
1man hier
这将为您提供典型的文件系统布局和每个位置的目的概述。