当用于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]'