Angenommen, ich stecke mehrere USB-Laufwerke ein, die nicht automatisch gemountet werden. Wie kann ich herausfinden, welche Gerätedatei zu welchem physischen Gerät gehört, damit ich es zum Beispiel mounten kann?
Ich verwende Mac OS X, aber ich mag eine Antwort, die auf allen (oder zumindest den beliebtesten) Unix-Systemen funktioniert. Ich hatte in der Vergangenheit dieses Problem mit Linux.
Antworten:
Udev verwenden:
Sie können nützliche Informationen abfragen
udev
(auf Systemen, die sie verwenden - fast alle Desktop-Linuxe mit Sicherheit). Wenn Sie beispielsweise wissen möchten, welches angeschlossene Laufwerk zugeordnet ist/dev/sdb
, können Sie Folgendes verwenden:Es wird eine Liste der Eigenschaften dieses Geräts angezeigt, einschließlich der Seriennummer (ID_SERIAL_SHORT). Mit diesen Informationen können Sie die Ausgabe von
lsusb -v
Dingen wie dem Hersteller und dem Produktnamen anzeigen und herausfinden.Ein kürzerer Weg dazu wäre
und siehe die Zeile mit der Übereinstimmung
$ID_VENDOR_ID:$ID_MODEL_ID
in der viel kürzeren Ausgabe vonlsusb
.Eine weitere nützliche Option ist
udevadm monitor
. Verwenden Sie diese Option, wenn Sie wissen möchten, welcher Geräteknoten zum Zeitpunkt des Anfügens des Geräts erstellt wurde . Also erstmal laufenUnd dann das Gerät anschließen. Sie sehen die Gerätenamen der erkannten Blockgeräte (Festplatten / Partitionen) am Ende jeder Ausgabezeile.
Ein praktisches Beispiel für eine Shell-Funktion:
Hier ist eine Funktion, die Sie in Ihr
.bashrc
(oder.zshrc
) einfügen können :Benutze es so:
listusbdisks
- um alle/dev/sdx
Geräte zu erkennen ;listusbdisks sdb
oderlistusbdisks /dev/sdb
oderlistusbdisks sdb sdc
- um nur Informationen zu bestimmten Geräten zu erhalten;listusbdisks -v [optional devices as above]
- um ausführliche Ausgaben von anzuzeigenlsusb
[Bearbeiten]: Es wurden einige Funktionen hinzugefügt, z. B. das Abfragen vieler Geräte, das Überprüfen der Bereitstellungen und das Steuern der Ausführlichkeit von
lsusb
.quelle
udev
.lsusb
auch ein optionales Programm. Aber beide sind sehr verbreitet.dmesg
. Dies ist jedoch nicht hilfreich, wenn das Gerät bereits angeschlossen ist und nach dem ersten weitere Geräte angeschlossen sind. :)Es gibt keine allgemeingültige Antwort. Unter Linux ist es wahrscheinlich am einfachsten, das Dienstprogramm gnome disk zu starten. Es zeigt alle erkannten Datenträger an, unabhängig davon, ob sie gemountet sind oder nicht. Über die Befehlszeile können Sie die Ausgabe von
blkid
oder abrufenudevadm info --export-db
.quelle
In Mac OS X können Sie versuchen, zu verwenden
diskutil list
.quelle
In Bezug auf alle Unixe halte ich dies nicht für machbar.
Die heute üblichen externen Busse verwenden kein festes Nummerierungsschema für ihre Ports, wie IDE es tat. Die einzigen verbleibenden Datenquellen für die Zuordnung, die Sie benötigen, sind die Herstellernamen der Laufwerke, ihre Seriennummern oder die UIDs der Partitionen.
Herstellernamen sind auf einem bestimmten Computer nicht unbedingt eindeutig (Angenommen, Sie schließen zwei externe Laufwerke derselben Serie an - sie werden identisch identifiziert). Seriennummern sind nicht "von außen sichtbar", ebenso wie Partitions-UIDs.
Die einzige universelle Lösung, die mir in den Sinn kommt, besteht darin, die physischen Laufwerke mit der Seriennummer zu kennzeichnen und den Befehl udevadm in der Antwort von rozcietrzewiacz zu verwenden, wenn UDEV verfügbar ist.
quelle