如何在 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 中安全地覆蓋可用空間