如何在 Linux 上使用 findmnt 命令
已发表: 2022-06-16 使用 Linux findmnt
命令发现有关文件系统挂载点的所有信息。 这是一个语法非常简单的一体化工具。 我们向您展示如何使用它。
挂载点
Linux 文件系统是一棵大树。 根据您在安装 Linux 时所做的选择,您计算机内的不同硬盘驱动器上可能有不同的文件系统。 如果你使用snap
包,你的系统中也会有squashfs
伪文件系统。 USB 记忆棒之类的设备上会有各种文件系统,尤其是当您还在 Windows 计算机上使用它们时。
无论文件系统类型如何,都必须在称为mount的过程中将它们移植到文件系统树上。 安装是获得工作系统的关键步骤。 我们倾向于认为挂载一个像硬盘一样的设备,但实际上挂载的是该设备上的文件系统。 如果无法访问所有这些不同的文件系统,您的计算机甚至可能无法启动,或者您将无法访问应用程序或数据。
文件系统安装在安装点上。 这些只是空目录。 挂载文件系统后,输入该目录会将您置于该文件系统中。 这提供了很大的灵活性。 文件系统树的根目录必须挂载在“ /
”上,但是您可以将其他文件系统挂载到对您的特定情况最有意义的位置。
这种灵活性确实意味着很难跟踪所有不同的挂载点,尤其是那些自动创建且在您没有参与的情况下创建的挂载点。 Linux 提供了多种命令行工具,让您可以查看挂载点的配置和状态。 在所有这些中, findmnt
是最容易使用的,并且有一些自己的技巧。
findmnt 命令
findmnt
命令已经安装在我们检查的 Ubuntu、Manjaro 和 Fedora 版本上。 如果它没有安装在您的 Linux 计算机上,您可以使用您的发行版的包管理器轻松找到它。
用于挂载文件系统的命令行工具称为mount
。 引导时挂载的文件系统在“/etc/fstab”文件中定义。 您可以使用mount
命令获取“/etc/fstab”文件中配置的所有挂载点的转储。
山
输出很详细,但格式是密集的文本墙。
通过一些努力,您可以选择自己的方式,或通过诸如grep
之类的实用程序将其管道化以找出您感兴趣的位。 findmnt
的输出更易于访问。
发现
相比之下, findmnt
的默认输出以表格形式显示,并包含一个显示挂载点层次结构的树。
这些列是:
- Target : 文件系统中挂载点的位置
- Source :包含文件系统的源设备。 请注意,这可能是一个伪设备,如环回设备。
- Fstype :文件系统类型。
- 选项:与命令行挂载命令一起使用或在“/etc/fstab”文件中用于挂载文件系统的选项。
要查看没有树的输出,请使用-l
(列表)选项。
查找 -l
列是相同的,但挂载点层次结构不表示为缩进树。
选择特定文件系统类型
-t (type) 选项导致findmnt
将其报告限制为仅包含您请求的文件系统类型。 例如,要仅查看ext4
文件系统,您可以使用:
findmnt -t exta
要仅查看squashfs
文件系统,请键入:
findmnt -t squashfs
要反转选择以便您看到除了在命令行上指定的类型之外的所有其他内容,请使用-i
(反转)选项。
findmnt -t squashfs -i
未报告squashfs
文件系统。
-t
(类型)选项允许您使用以逗号分隔的文件系统类型列表。 不要在它们之间放置空格,因为文件系统类型之间不允许有空格。
findmnt -t squashfs,proc,ext4
选择数据源
默认情况下, 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
我们将再试一次,这次我们将使用-k
(内核)选项。
findmnt -k -t vfat
这报告了四个条目。 一个是与-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
我们可以看到这两个 USB 记忆棒有vfat
文件系统,它们被挂载为“/dev/sdb2”和“/dev/sdc1”。
在 findmnt 中使用轮询模式
findmnt
最酷的功能可能是它的轮询功能。 将图像写入 USB 设备是您可以发现自己定期执行的操作。 当然,识别正确的驱动器至关重要。 您不想覆盖错误的设备。 findmnt
可以轻松查看可移动驱动器连接到哪个设备。
有两种方法可以做到这一点。 您可以要求findmnt
在一段时间内监视新的挂载,以毫秒为单位。 报告在此期间发生的任何装载。 这使用--timeout
选项。
第二种方法告诉findmnt
等到它检测到新的挂载。 这使用--first-only
选项。 只要发生新的挂载,它就会等待,但它只会报告发生的第一个挂载。 --timeout
选项将报告在指定轮询期间发生的所有新挂载。
此命令告诉findmnt
监视新的挂载 30 秒。
findmnt -p --timeout 30000
在此期间插入了一个 USB 记忆棒并进行了报告,并且findmnt
将继续监视剩余的 30 秒。
此命令告诉findmnt
监视新的挂载,直到它看到创建了一个新的挂载点。
findmnt -p --first-only
插入新设备时,它会报告新的挂载点,然后退出到命令提示符。
避免犯规的简单方法
覆盖错误的设备总是一场灾难。 findmnt
命令可以轻松准确地识别您刚刚插入的设备,从而使覆盖过程更加安全。
简单和安全是双赢的另一种说法。
相关:如何在 Windows 中安全地覆盖可用空间