При использовании mount
для простого перечисления всех смонтированных файловых систем, есть ли способ сделать так, чтобы он не перечислял "фиктивные" файловые системы? То есть, сделать так, чтобы он перечислял только те файловые системы, которые df
это делают.
РЕДАКТИРОВАТЬ: под «фиктивными» я подразумеваю файловые системы, которые включаются при df
использовании этой --all
опции, поскольку именно так df
они называются на странице руководства.
решение1
Во-первых, "пустышка" - это, вероятно, не лучший термин - procfs
или sysfs
они dev(tmp)fs
далеки от бесполезности. Либо используйте -t
опцию (type) 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
внетпоявляться.
The-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)
statvfs
Вот еще один подход с однострочным кодом Python. (Perl гораздо лучше справляется с такими однострочными кодами, но в его стандартной библиотеке их нет .)
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]'