Заставить монтирование не выводить список «фиктивных» файловых систем (типа df)

Заставить монтирование не выводить список «фиктивных» файловых систем (типа df)

При использовании 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]'

Связанный контент