當用於mount
簡單地列出所有已安裝的檔案系統時,是否有某種方法可以使其不列出「虛擬」檔案系統?讓它只列出有此df
功能的檔案系統。
編輯df
:「虛擬」是指當您使用該選項時包含的檔案系統--all
,因為這就是df
手冊頁對它們的稱呼。
答案1
首先,「啞巴」可能不是最好的術語——或者procfs
遠非毫無用處。使用(type) 選項並為其提供一個以逗號分隔的您感興趣的檔案系統清單:sysfs
dev(tmp)fs
-t
mount
mount -t tmpfs,xfs
或用於grep
過濾您想要的內容(可能grep -v
顯示不符的內容):
mount | grep -Ev "(cgroup|proc|sysfs)"
答案2
另一個選擇是使用lsblk -f
:
lsblk 列出所有可用或指定區塊裝置的資訊。
這意味著,網路共用(nfs、sshfs)或虛擬檔案系統(dev、run、sys、proc 等)是 不是顯示。此外,tmpfs
通常顯示的檔案系統df -h
將不是出現。
此-f
選項輸出有關檔案系統的信息,其中包括掛載點。
例如,在我的機器上,它列出了:
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
|-sda1 ext2 bootpar ab2e48a8-5f1c-484e-a4a1-f8545e4b2019 /boot
|-sda2 swap swappar 6e9f6e70-141a-417c-82a5-113a3d4c5a53 [SWAP]
`-sda3 ext4 homepar 52f7164d-fac7-4abe-bf78-71353fac7850 /home
sdb isw_raid_member
`-md126 ext4 rootparraid 4275f5ba-8244-4039-9100-06afee678557 /
sdc isw_raid_member
`-md126 ext4 rootparraid 4275f5ba-8244-4039-9100-06afee678557 /
sr0
答案3
df
GNU coreutils 有一個被忽略的檔案系統類型的列表,但它不包含很多條目。在大多數情況下,它消除了大小為 0 的檔案系統。
mount
無法直接存取檔案系統大小。要獲得相同的過濾,您需要將 的輸出mount
與df
或其他一些工具的輸出進行比較,以獲得檔案系統大小。
df
這是一種從和獲取排序輸出mount
,並對它進行排序和連接的方法。
join -o 2.1,2.2,2.3,2.4,2.5,2.6,2.7,2.8,2.9 <(df -P | tail -n +2 | sort) <(mount | sort)
這是另一種使用 Python 單行程式碼的方法。 (Perl 在此類單行方面要好得多,但其標準庫中沒有statvfs
。)
mount | python -c 'import os, sys; [sys.stdout.write(line) for (dev, line) in [(line.split(" ")[2], line) for line in sys.stdin.readlines()] if os.statvfs(dev).f_blocks]'