如何在 Linux 上使用 findmnt 命令

已发表: 2022-06-16
漂浮在打开的笔记本电脑上的文档管理系统的插图
NicoElNino/Shutterstock.com

使用 Linux findmnt命令发现有关文件系统挂载点的所有信息。 这是一个语法非常简单的一体化工具。 我们向您展示如何使用它。

挂载点

Linux 文件系统是一棵大树。 根据您在安装 Linux 时所做的选择,您计算机内的不同硬盘驱动器上可能有不同的文件系统。 如果你使用snap包,你的系统中也会有squashfs伪文件系统。 USB 记忆棒之类的设备上会有各种文件系统,尤其是当您还在 Windows 计算机上使用它们时。

无论文件系统类型如何,都必须在称为mount的过程中将它们移植到文件系统树上。 安装是获得工作系统的关键步骤。 我们倾向于认为挂载一个像硬盘一样的设备,但实际上挂载的是该设备上的文件系统。 如果无法访问所有这些不同的文件系统,您的计算机甚至可能无法启动,或者您将无法访问应用程序或数据。

如何从 Linux 终端挂载和卸载存储设备
相关如何从 Linux 终端挂载和卸载存储设备

文件系统安装在安装点上。 这些只是空目录。 挂载文件系统后,输入该目录会将您置于该文件系统中。 这提供了很大的灵活性。 文件系统树的根目录必须挂载在“ / ”上,但是您可以将其他文件系统挂载到对您的特定情况最有意义的位置。

这种灵活性确实意味着很难跟踪所有不同的挂载点,尤其是那些自动创建且在您没有参与的情况下创建的挂载点。 Linux 提供了多种命令行工具,让您可以查看挂载点的配置和状态。 在所有这些中, findmnt是最容易使用的,并且有一些自己的技巧。

findmnt 命令

findmnt命令已经安装在我们检查的 Ubuntu、Manjaro 和 Fedora 版本上。 如果它没有安装在您的 Linux 计算机上,您可以使用您的发行版的包管理器轻松找到它。

广告

用于挂载文件系统的命令行工具称为mount 。 引导时挂载的文件系统在“/etc/fstab”文件中定义。 您可以使用mount命令获取“/etc/fstab”文件中配置的所有挂载点的转储。

挂载命令

输出很详细,但格式是密集的文本墙。

来自 mount 命令的原始信息转储

通过一些努力,您可以选择自己的方式,或通过诸如grep之类的实用程序将其管道化以找出您感兴趣的位。 findmnt的输出更易于访问。

 发现

findmnt 命令

相比之下, findmnt的默认输出以表格形式显示,并包含一个显示挂载点层次结构的树。

findmnt 的列表输出

这些列是:

  • Target : 文件系统中挂载点的位置
  • Source :包含文件系统的源设备。 请注意,这可能是一个伪设备,如环回设备。
  • Fstype :文件系统类型。
  • 选项:与命令行挂载命令一起使用或在“/etc/fstab”文件中用于挂载文件系统的选项。

要查看没有树的输出,请使用-l (列表)选项。

 查找 -l 

带有 -l 列表选项的 findmnt 命令

广告

列是相同的,但挂载点层次结构不表示为缩进树。

findmnt 普通列表输出

选择特定文件系统类型

-t (type) 选项导致findmnt将其报告限制为仅包含您请求的文件系统类型。 例如,要仅查看ext4文件系统,您可以使用:

 findmnt -t exta 

使用 findmnt 检查 ext4 文件系统挂载点

要仅查看squashfs文件系统,请键入:

 findmnt -t squashfs 

使用 findmnt 检查 squashfs 文件系统挂载点

要反转选择以便您看到除了在命令行上指定的类型之外的所有其他内容,请使用-i (反转)选项。

 findmnt -t squashfs -i 

使用 -i invert 选项排除 squashfs 挂载点

未报告squashfs文件系统。

忽略 squashfs 文件系统的 findmnt 输出

-t (类型)选项允许您使用以逗号分隔的文件系统类型列表。 不要在它们之间放置空格,因为文件系统类型之间不允许有空格。

 findmnt -t squashfs,proc,ext4 

使用 findmnt 一次选择三种类型的文件系统挂载点

选择数据源

默认情况下, findmnt从“/etc/fstab”、“/etc/mtab”和“/proc/self/mountinfo”获取其信息。

  • /etc/fstab :这是保存已配置挂载详细信息的文件。 这些是在引导时执行的。
  • /etc/mtab :此文件包含当前挂载的详细信息。
  • /proc/self/mountinfo :这会查询内核以获取系统挂载的最权威帐户。

如果你愿意,你可以告诉findmnt使用一个特定的来源。 选项包括:

  • —fstab 或 -s :仅在“/etc/fstab”中查找。
  • —mtab 或 -m :仅在“/etc/mtab”中查找。
  • —kernel 或 -k :仅查看“/proc/self/mountinfo”。
广告

如果我们寻找vfat文件系统,我们可以看到这会产生什么不同。 首先,我们将使用-s (fstab) 选项。 这会找到一个安装在“/boot/efi”的vfat文件系统。

 findmnt -s -t vfat 

使用 findmnt 在 /etc/fstab 中搜索 vfat 文件系统挂载

我们将再试一次,这次我们将使用-k (内核)选项。

 findmnt -k -t vfat 

使用 findmnt 在 /proc/self/mount 中搜索 vfat 文件系统挂载

如何在 Linux 上编写 fstab 文件
相关如何在 Linux 上编写 fstab 文件

这报告了四个条目。 一个是与-s选项找到的相同的vfat文件系统。 其他三个是由于插入了两个 USB 记忆棒而发生的临时挂载。- -s选项没有找到它们,因为它们没有在“/etc/fstab”文件中配置。

一个 USB 记忆棒连接为“/dev/sdc1”,这是设备sdc上的第一个分区。 另一个记忆棒上有两个分区,它们被挂载为“/dev/sdb1”和“/dev/sdb2”。

相关:什么是 Linux fstab 文件,它是如何工作的?

按挂载点选择

如果您知道挂载点,则可以将其传递给findmnt以了解设置和其他详细信息。

 findmnt /media/dave/PINK
 findmnt /media/dave/WHITEUSB 

使用 findmnt 按名称检查挂载点

广告

我们可以看到这两个 USB 记忆棒有vfat文件系统,它们被挂载为“/dev/sdb2”和“/dev/sdc1”。

在 findmnt 中使用轮询模式

findmnt最酷的功能可能是它的轮询功能。 将图像写入 USB 设备是您可以发现自己定期执行的操作。 当然,识别正确的驱动器至关重要。 您不想覆盖错误的设备。 findmnt可以轻松查看可移动驱动器连接到哪个设备。

如何在 Linux 中将 ISO 文件刻录到 USB 驱动器
相关如何在 Linux 中将 ISO 文件刻录到 USB 驱动器

有两种方法可以做到这一点。 您可以要求findmnt在一段时间内监视新的挂载,以毫秒为单位。 报告在此期间发生的任何装载。 这使用--timeout选项。

第二种方法告诉findmnt等到它检测到新的挂载。 这使用--first-only选项。 只要发生新的挂载,它就会等待,但它只会报告发生的第一个挂载。 --timeout选项将报告在指定轮询期间发生的所有新挂载。

此命令告诉findmnt监视新的挂载 30 秒。

 findmnt -p --timeout 30000 

让 findmnt 监视新的挂载点 30 秒

在此期间插入了一个 USB 记忆棒并进行了报告,并且findmnt将继续监视剩余的 30 秒。

此命令告诉findmnt监视新的挂载,直到它看到创建了一个新的挂载点。

 findmnt -p --first-only 

使用 findmnt 等待下一个新的挂载点

广告

插入新设备时,它会报告新的挂载点,然后退出到命令提示符。

避免犯规的简单方法

覆盖错误的设备总是一场灾难。 findmnt命令可以轻松准确地识别您刚刚插入的设备,从而使覆盖过程更加安全。

简单和安全是双赢的另一种说法。

相关:如何在 Windows 中安全地覆盖可用空间