Powiedzmy, że podłączam kilka napędów USB, które nie są automatycznie montowane. Jak mogę dowiedzieć się, który plik urządzenia należy do którego urządzenia fizycznego, aby na przykład go zamontować?
Używam Mac OS X, ale wolę odpowiedź, która działa na wszystkich (a przynajmniej najbardziej popularnych) systemach uniksowych. W przeszłości miałem ten problem z Linuksem.
Odpowiedzi:
Za pomocą udev:
Przydatne zapytania można uzyskać
udev
(w systemach, które ich używają - na pewno prawie wszystkie Linuxy typu stacjonarnego). Na przykład, jeśli chcesz wiedzieć, z którym podłączonym dyskiem jest powiązany/dev/sdb
, możesz użyć:Wyświetli listę właściwości tego urządzenia, w tym szeregowy (ID_SERIAL_SHORT). Mając te informacje, możesz spojrzeć na dane wyjściowe
lsusb -v
i znaleźć takie rzeczy, jak producent i nazwa produktu.Byłaby to krótsza ścieżka do tego
i zobacz linię z dopasowaniem
$ID_VENDOR_ID:$ID_MODEL_ID
w znacznie krótszym wyjściu zlsusb
.Inną przydatną opcją jest
udevadm monitor
. Użyj go, jeśli chcesz wiedzieć, który węzeł urządzenia jest tworzony w momencie podłączania urządzenia . Więc pierwszy biegA następnie podłącz urządzenie. Zobaczysz nazwy urządzeń wykrytych urządzeń blokowych (dysków / partycji) wydrukowanych na końcu każdej linii wyjściowej.
Praktyczna przykładowa funkcja powłoki:
Oto funkcja, którą możesz umieścić w swoim
.bashrc
(lub.zshrc
):Użyj tego w ten sposób:
listusbdisks
- rozpoznać wszystkie/dev/sdx
urządzenia;listusbdisks sdb
lublistusbdisks /dev/sdb
lublistusbdisks sdb sdc
- aby uzyskać informacje tylko o niektórych urządzeniach;listusbdisks -v [optional devices as above]
- aby wyświetlić pełne wynikilsusb
[Edytuj]: Dodano pewne funkcje, takie jak odpytywanie wielu urządzeń, sprawdzanie montowań i kontrolowanie szczegółowości
lsusb
.źródło
udev
.lsusb
to także program opcjonalny. Ale oba są niezwykle powszechne.dmesg
. Ale to nie będzie pomocne, jeśli urządzenie jest już podłączone i jeśli po pierwszym podłączono więcej urządzeń. :)Nie ma uniwersalnej odpowiedzi. W Linuksie najprostszym sposobem jest prawdopodobnie uruchomienie narzędzia dyskowego gnome i wyświetli wszystkie wykryte dyski, niezależnie od tego, czy są zamontowane, czy nie. Z wiersza poleceń możesz sprawdzić dane wyjściowe
blkid
lubudevadm info --export-db
.źródło
W Mac OS X możesz spróbować użyć
diskutil list
.źródło
W odniesieniu do wszystkich Uniksów nie sądzę, aby było to wykonalne.
Obecnie zwykłe zewnętrzne autobusy nie używają ustalonego schematu numeracji dla swoich portów, podobnie jak IDE. Zatem jedynymi pozostałymi źródłami danych potrzebnymi do mapowania są nazwy producentów dysków, ich numery seryjne lub identyfikatory UID partycji.
Nazwy producentów niekoniecznie są unikalne na danym komputerze (załóżmy, że podłączasz dwa dyski zewnętrzne z tej samej serii - będą identyfikować się identycznie). Numery seryjne nie są „widoczne z zewnątrz”, podobnie jak identyfikatory UID partycji.
Tak więc, jedynym jedynym uniwersalnym rozwiązaniem, jakie mogę wymyślić, jest oznaczenie dysków fizycznych numerem seryjnym i użycie polecenia udevadm podanego w odpowiedzi rozcietrzewiacz, jeśli UDEV jest dostępny.
źródło