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