Сделайте монтируются не, перечисляют “фиктивные” файловые системы (как df)

Необходимо смочь заставить это работать с FIFO и каналом.

$ mkfifo fifo
$ ./pgm2 < fifo | ./pgm1 > fifo

Вход two's программы является FIFO и выводами к каналу. Программа вход является каналом и выводами к FIFO.

Предупредите хотя: это очень колоритно в целом и может зайти в тупик, если "ping/вонь" между процессами не прекрасен.

См. также этот вопрос о Переполнении стека: Как перенаправить stdout 2-го процесса назад к stdin 1-го процесса?

3
08.10.2014, 10:59
3 ответа

Другой вариант - использовать lsblk -f:

lsblk перечисляет информацию обо всех доступных или указанных блочных устройствах.

Это означает, что сетевые разделяемые ресурсы (nfs, sshfs) или виртуальные файловые системы (dev,run,sys,proc и т.д.) отображаются а не . Также, файловая система tmpfs, которая обычно отображается в df -h, не будет отображаться а не .

Опция -f выводит информацию о файловых системах, которая включает точку монтирования -h.

на моей машине, например, в ней указано:

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                                                                      
2
27.01.2020, 21:14

Прежде всего, "болван", вероятно, не самый лучший термин - procfs, sysfs или dev(tmp)fs далеко не бесполезны. Либо используйте опцию -t (type) для -монтирования и передайте ей список интересующих вас файловых систем, разделенный запятыми:

mount -t tmpfs,xfs

, либо используйте grep для фильтрации того, что вам нужно (возможно grep -v, чтобы показать то, что не совпадает):

mount | grep -Ev "(cgroup|proc|sysfs)"
3
27.01.2020, 21:14

DF В GNU CORETILS имеет список игнорируемых типов файловой системы, но он не содержит много записей. По большей части он устраняет файловые системы, имеющие размер 0. Это обычно охватывает игнорируемые типы файловых систем в любом случае.

Установка не имеет прямого доступа к размеру файловой системы. Чтобы получить ту же фильтрацию, вам нужно будет сопоставить вывод Mount с выходом DF или некоторый другой инструмент для получения размера файловой системы.

Вот способ получить отсортированный выход из DF и , установлен и сортировать и присоединиться к нему.

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)

Вот еще один подход с питоном одноклассником. (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]'
1
27.01.2020, 21:14

Теги

Похожие вопросы