Woher weiß ich, ob es sich um eine lokale Festplatte oder einen lokalen USB-Stick handelt? Ich würde es vorziehen, dies ohne Root-Rechte zu tun./dev/sdX
OK, hat udevadm
mir sehr geholfen:
Für lokale Festplatte:
udevadm info --query=all --name=sdb | grep ID_BUS
E: ID_BUS=ata
Für USB-Stick:
udevadm info --query=all --name=sdc | grep ID_BUS
E: ID_BUS=usb
bash
hardware
hard-disk
administration
Gänseblümchen
quelle
quelle
Antworten:
Es gibt ein paar Möglichkeiten, ohne Root-Rechte zu entscheiden, viele davon knifflig:
Verwenden von
/dev/disk/by-id
:Wenn dies mit so etwas wie reagiert
/dev/disk/by-id/usb-blah-blah-blah
, dann ist es ein USB-Laufwerk. Andere Präfixe enthaltenata
,dm
,memstick
,scsi
etc.Die Verwendung unterscheidet
/dev/disk/by-path
sich nicht wesentlich:Sie werden so etwas bekommen
/dev/disk/by-path/pci-0000:00:1d.7-usb-0:1:1.0-scsi-0:0:0:0
. Dies zeigt den Gerätepfad, der zur Festplatte führt. In diesem Fall ist ein grober Pfad PCI → USB → Festplatte. (Beachten Sie die-usb-
).Verwenden von udev (Ich starte Debian. Mein
udevadm
ist, in/sbin
dem nicht auf meinem steht$PATH
- Ihr könnte anderswo sein, auf oder neben Ihrem$PATH
):Sie erhalten den Bustyp, auf dem sich das Gerät befindet. Entfernen Sie die
| grep ID_BUS
für die vollständige Auflistung der Informationen (müssen Sie möglicherweise hinzufügen|less
).Wenn Sie
lshw
installiert haben, funktioniert möglicherweise auch Huygens 'Antwort :Suchen Sie in der Ausgabe nach Ihrer Festplatte. In
less
Versuchen /sdX und Blick auf die vorhergehenden,bus info
Linien - die erste wird nur sagenscsi@…
, aber die man mehrere Linien , bevor es wird mehr erhellend. Sie sollten dies jedoch unbedingt als Superuser ausführen, damit es möglicherweise nicht geeignet ist. (Symptome: Auf dem Laptop, den ich ausprobiert habe, ist die SATA-Festplatte aufgeführt, aber nicht die USB-Festplatte - läuft mitsudo
beiden)Es gibt auch andere, mehr oder weniger direkte als diese.
quelle
esatap
?Ich kenne eine Lösung, aber leider erfordert sie Root-Rechte. Vielleicht finden Sie es trotzdem nützlich:
Für jedes Gerät werden der logische Name (z. B.
/dev/sda
) und die Businformationen gedruckt , die im Falle eines USB-Geräts etwa "usb @ 1: 2" lauten.Beispielausgabe:
quelle
Sie könnten verwenden
lsblk
:wobei
-d
oder--nodeps
bedeutet, dass keine Slaves gedruckt werden, und-o name,tran
oder--output name,tran
bedeutet, dass nur der Name des Geräts und der Transporttyp des Geräts aufgeführt werden. Fügen Sierm
der Liste der Ausgabespalten hinzu, um zu sehen, welche Geräte entfernbar sind (1
fallstrue
):quelle
Hierfür sind keine Root-Rechte erforderlich (viele dieser Befehle verwenden jedoch Bashismen und sind von diesen abhängig, sodass sie nicht in allen POSIX-kompatiblen Shells funktionieren):
Es gibt eine schnelle Möglichkeit, nach einem der folgenden Punkte zu fragen :
sdX
Die wirklich interessante Datei ist
capability
. Auf meinem Debian habe ich einegenhd.h
Datei, also:Nur um zu wissen, ob das Flag
removable
gesetzt ist:so
Testet, ob für den
capability
Wert (in meinemsda
obigen Beispiel 52 ) das1
Bit gesetzt ist (dh ob es sich um eine ungerade Zahl handelt).Aber Linux rendert alle Flags in
/sys
, also/sys/block/sdX/removable
ist es viel einfacher , danach zu fragen ! ;-)So ein USB - Schlüssel sein könnte
removable
, aber da es viele ist abnehmbarer Geräte, würde ich sicherstellen mag , dass die Größe des Mediums größer als 0 ist (wie ein unbelastetes CD-ROM-Laufwerk, für Probe) und dass das Gerät ist nicht in Verwendung: Beim AnschauensdX/trace/enable
ist das nicht gebunden:Hinweis: All dies ist auf bash v4.2 + gut getestet.
Unter Bash können Sie diese sehr schnelle und effiziente Methode verwenden:
Auf meinem System gibt es 4 USB-Sticks, von denen einer (
sde
) bereits gemountet ist, sodass der vorherige Befehl Folgendes ausgibt:Mein Drehbuch:
Es gibt eine kleine Bash- Funktion, die ich geschrieben habe, um das aktualisierte Debian Live zu installieren.
# Der erste Teil gibt nur die für Menschen lesbare Größe wieder. Die Funktion beginnt dort.
Dies weist die Antwort als Array der Variablen zu, die als erstes Argument angegeben wurde, oder der Variablen
$REPLY
:(Das letzte Feld kann Leerzeichen enthalten.)
quelle
…,device/{model,type,vendor,uevent}
? (2) Können Sie bitte Ihre GENHD-Befehle und Ihre "trace / enable" -Befehle erläutern? (3) Ihr[ $(( $(< $file ) & 1 )) -ne 0 ]
Test kann vereinfacht (verkürzt) werden(( $(< $file ) & 1 ))
./usr/src/*/include/linux
. Versuchen Sie essed -ne 's/#define.*GENHD_FL_\([A-Z0-9_]*\)[ \t]*\([0-9]*\) \?.*$/GENHD_FLAGS[\2]="\1"/p;' /usr/src/*/include/linux/genhd.h
. (3) JaIch schlage vor, nur
hdparm
oderlshw
(was Sie möglicherweise installieren müssen) zu verwenden undsudo
es als root auszuführen.sollten Ihnen alle Informationen geben.
quelle
hdparm -i /dev/sda /dev/sda: HDIO_DRIVE_CMD(identify) failed: Invalid exchange HDIO_GET_IDENTITY failed: Invalid argument
Lesen Sie einfach den Wert von
/sys/block/sdX/removable
.Beispielsweise:
/dev/sdc
ist ein USB-Stick (es kann sich um eine SD-Karte oder ein anderes Wechselmedium handeln).quelle
dmesg
ist die einfachste Methode:( Ist der Name Ihres Geräts, z. B. )
sdX
sda
Aus dem obigen Befehl sehen Sie Folgendes:
quelle
dmesg
Liest den zirkulären Nachrichtenpuffer des Kernels, so dass diese Lösung erst vor relativ kurzer Zeit nach einem NeustartMit den folgenden Befehlen können Sie SD-, USB- und SATA-Geräteknoten abrufen.
quelle
/dev/sdX
Wie kann ich im Einzelfall feststellen, ob es sich um eine lokale Festplatte oder einen USB-Stick handelt?". Bitte erläutern Sie, wie das OP Ihre Befehle dazu verwenden kann Entschlossenheit. (2) Wir bevorzugen Antworten, die Befehle geben, und erklären sie gegenüber Antworten, die nur Befehle geben. Bitte erklären Sie, was Sie tun. Bitte antworten Sie nicht in Kommentaren; Bearbeiten Sie Ihre Antwort, um sie klarer und vollständiger zu gestalten. … (Fortsetzung)awk
ist ein sehr mächtiges Werkzeug. Viele Anfänger posten Antworten, die a tungrep
und leiten ihre Ausgabe anawk
. Dies ist selten notwendig;awk
kann Pattern Matching machen und kann die gewünschte Eingabe ohne Hilfe von auswählengrep
. Sie haben eine Pipeline von zweigrep
Befehlen, die inawk
und dann in einen zweitenawk
Befehl weitergeleitet werden. Dies kann stark vereinfacht werden; bitte versuche. (4) Auch für Klarheit, könnten Sie ändern möchten ,`…`
um$(…)
- sehen dies , dies und dies .Ich bin faul, inxi sagt mir das leicht:
Ich glaube, es sagt mir auch, ob es sich um Firewire und vielleicht um einen anderen Typ handelt, aber ich müsste noch einmal überprüfen, ob ich diese Typen eine Weile nicht mehr verwendet habe.
Es sagt mir auch mit -p, ob Partitionen remote sind, wie Samba oder NFS-Mounts.
quelle
Führen Sie nach dem Anschließen des USB-Geräts
dmesg
ein Konsolenfenster aus. Sie erhalten einige Hinweise.Zum Beispiel sagt es etwas in der Art von "Gerät angeschlossen, Massenspeicher / dev / sdd".
quelle