Скажем, я подключаю несколько USB-накопителей, которые не подключаются автоматически. Как я могу узнать, какой файл устройства принадлежит какому физическому устройству, чтобы я мог, например, смонтировать его?
Я использую Mac OS X, но мне больше нравится ответ, который работает на всех (или, по крайней мере, самых популярных) системах Unix. У меня была эта проблема с Linux в прошлом.
Ответы:
Используя udev:
Вы можете получить полезную информацию, запрашивая ее
udev
(в системах, которые ее используют - наверняка почти во всех настольных Linux). Например, если вы хотите узнать, с каким подключенным диском связан/dev/sdb
, вы можете использовать:Он покажет вам список свойств этого устройства, включая серийный номер (ID_SERIAL_SHORT). Имея эту информацию, вы можете посмотреть на результаты
lsusb -v
и узнать такие вещи, как производитель и название продукта.Более короткий путь для этого будет
и увидеть строку с соответствием
$ID_VENDOR_ID:$ID_MODEL_ID
в гораздо более коротком выводеlsusb
.Еще одна полезная опция
udevadm monitor
. Используйте его, если вы хотите знать, какой узел устройства создается в точке подключения устройства . Итак, первый запускА затем подключите устройство. Вы увидите имена устройств обнаруженных блочных устройств (дисков / разделов), напечатанные в конце каждой строки вывода.
Практический пример функции оболочки:
Вот функция, которую вы можете вставить в свой
.bashrc
(или.zshrc
):Используйте это так:
listusbdisks
- распознать все/dev/sdx
устройства;listusbdisks sdb
илиlistusbdisks /dev/sdb
илиlistusbdisks sdb sdc
- чтобы получить информацию только об определенных устройствах;listusbdisks -v [optional devices as above]
- показать подробные выводыlsusb
[Редактировать]: добавлены некоторые функции, такие как запросы многих устройств, проверка монтирования и контроль многословия
lsusb
.источник
udev
.lsusb
это также дополнительная программа. Но оба чрезвычайно распространены.dmesg
. Но это не поможет, если устройство уже подключено и после первого подключено больше устройств. :)Универсального ответа нет. В Linux самый простой способ - просто запустить утилиту gnome disk, и она покажет все обнаруженные диски, независимо от того, смонтированы они или нет. Из командной строки вы можете просмотреть вывод
blkid
илиudevadm info --export-db
.источник
В Mac OS X вы можете попробовать использовать
diskutil list
.источник
Что касается всех Unix, я не думаю, что это возможно.
Обычные внешние шины сегодня не используют фиксированную схему нумерации для своих портов, как в IDE. Таким образом, единственными оставшимися источниками данных для сопоставления, которые вам нужны, являются имена производителей накопителей, их серийные номера или UID разделов.
Названия производителей не обязательно являются уникальными на данном компьютере (предположим, что вы подключаете два внешних диска из одной серии - они будут идентифицироваться одинаково). Серийные номера не «видны снаружи», как и идентификаторы разделов.
Итак, о единственном универсальном решении, которое я могу придумать, - пометить физические диски серийным номером и использовать команду udevadm, приведенную в ответе rozcietrzewiacz, если UDEV доступен.
источник