Мне нужно найти все доступные для записи устройства хранения, подключенные к данной машине, независимо от того, смонтированы они или нет .
Сложный способ сделать это - попробовать каждую запись /dev
, соответствующую записываемым устройствам ( hd* and sd*
) ......
Есть ли лучшее решение, или я должен остановиться на этом?
Ответы:
/proc/partitions
перечислит все блочные устройства и разделы, которые распознает система. Затем вы можете попробовать использовать,file -s <device>
чтобы определить, какая файловая система присутствует в разделе, если таковая имеется.источник
Вы всегда можете сделать то,
fdisk -l
что, кажется, работает очень хорошо, даже на странных установках, таких как устройства EC2 xvda.Вот дамп экземпляра m1.large:
Пока
mount
говорит:И
/proc/partitions
говорит:Примечание
Как
fdisk -l
работает то , что я хотел бы знать себя.источник
fdisk -l
работает, но я подумал, что вам может быть интересно узнать: он читает,/proc/partitions
а затем выполняет итерацию,/sys/dev/block/*
которая содержит набор символических ссылок на истинное представление устройства в sysfs. Вы можете найти эту информацию, запустивfdisk
подstrace
:)вы также можете попробовать lsblk ... находится в util-linux ... но у меня тоже есть вопрос
безрезультатно
fdisk хорош, но не настолько хорош ... кажется, что он не может все "видеть"
В моем конкретном примере у меня есть флешка, в которой также есть встроенный картридер, и я могу видеть только флешку с помощью fdisk:
но не карта (карта является / dev / sdl)
кроме того, file -s неэффективен ...
это хорошо ... НО
чтобы увидеть информацию о диске, который не может быть принят fdisk, вы можете использовать parted:
источник
ls /sys/block
источник
Использование HAL (ядро 2.6.17 и выше):
источник
Современные системы Linux обычно имеют записи в / dev только для существующих устройств, поэтому переход через hda * и sda *, как вы предлагаете, будет работать достаточно хорошо.
В противном случае в / proc может быть что-то, что вы можете использовать. Беглый взгляд, я бы сказал, что / proc / partitions может делать то, что вам нужно.
источник
libsysfs действительно выглядит потенциально полезным, но не напрямую из сценария оболочки. В комплекте с ним идет программа под названием systool, которая будет делать то, что вы хотите, хотя может быть проще просто заглянуть в / sys напрямую, чем использовать другую программу, которая сделает это за вас.
источник