使挂载不列出“虚拟”文件系统(如 df)

使挂载不列出“虚拟”文件系统(如 df)

当用于mount简单地列出所有已安装的文件系统时,是否有某种方法可以使其不列出“虚拟”文件系统?让它只列出执行此df操作的文件系统。

编辑df:“虚拟”是指当您使用该选项时包含的文件系统--all,因为这就是df手册页对它们的称呼。

答案1

首先,“哑巴”可能不是最好的术语——或者procfs远非毫无用处。使用(type) 选项并为其提供一个以逗号分隔的您感兴趣的文件系统列表:sysfsdev(tmp)fs-tmount

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

dfGNU coreutils 有一个被忽略的文件系统类型的列表,但它不包含很多条目。在大多数情况下,它消除了大小为 0 的文件系统。无论如何,这通常涵盖了被忽略的文件系统类型。

mount无法直接访问文件系统大小。要获得相同的过滤,您需要将 的输出mountdf或其他一些工具的输出进行比较,以获得文件系统大小。

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]'

相关内容