USB-Sticks auswerfen / Befehl zum Auswerfen

55

Ich weiß, dass der ejectBefehl zum Auswerfen fast aller angeschlossenen Hardwarekomponenten verwendet werden kann. Kann er jedoch zum Auswerfen von USB-Laufwerken verwendet werden?

Ist es möglich, USB-Laufwerke und externe Festplatten mit dem ejectBefehl auszuwerfen ?

Joe Barr
quelle
3
Verwandte: das Gegenteil von eject /dev/sdXist sg_start -s /dev/sdX(aus sg3_utilsPaket), beide verwenden SCSI-Befehle, um an das Gerät zu senden.
Yeti

Antworten:

15

Nein, sie müssen es auch nicht sein. ejectwird zum Öffnen von optischen Laufwerken verwendet, bei denen das Medium nicht direkt entnommen werden kann.

Für USB / eSATA / etc. Ist das Abmelden ausreichend. Speichergeräte.

Ignacio Vazquez-Abrams
quelle
Hmm, ich habe gesehen, wie HDD in / dev / sda irgendwo ausgeworfen wurde. Ich denke, der Hinweis war damals falsch.
Joe Barr
Sie können es tun, aber es macht normalerweise nicht viel, wenn überhaupt.
Ignacio Vazquez-Abrams
1
Dies setzt voraus, dass das Gerät an erster Stelle gemountet ist und eine Reihe weiterer Annahmen enthält (zum Beispiel ein Dateisystem, das Sie lesen können). Stellen Sie sich vor, Sie löschen einige externe Laufwerke - sie werden wahrscheinlich nie gemountet. Eject ist das Richtige.
James Moore
1
Wenn ich jemals unsicher bin, syncziehe ich es heraus
EkriirkE
Big, fat WARNUNG: Dies ist NICHT ganz richtig. Wenn Sie es nicht tun, ejectkann der zugrunde liegende USB-Gerätetreiber noch schreiben (versuchen), nachdem er umountzurückgekehrt ist. Dies ist deutlich zu erkennen, wenn das Laufwerk eine Status-LED hat. Das Ziehen des USB-Sticks direkt nach dem umountBeenden ist REZEPT FÜR EINEN UNFALL.
ZioByte
77

Ja. Zum Beispiel:

sudo eject /dev/sda

Andere Antworten hier, die darauf hinweisen, dass Sie mechanische Auswurfhardware benötigen, sind falsch.

Das Abhängen ist nicht dasselbe wie das Auswerfen.

  1. Wenn Sie ein Volume aushängen, können Sie es sofort wieder einhängen, da das zugrunde liegende Gerät noch verfügbar ist. In einigen Situationen kann dies ein Sicherheitsrisiko darstellen. Durch das Auswerfen des Geräts wird das Gerät nur durch einen Reset des USB-Subsystems (z. B. einen Neustart) neu geladen.
  2. Indem Sie das Gerät auswerfen, deaktivieren Sie effektiv jeden weiteren Zugriff auf das Gerät. Erst ein Reset des USB-Subsystems (z. B. ein Neustart) lädt das Gerät neu. Andernfalls müssen Sie das USB-Gerät physisch trennen und erneut anschließen, um erneut darauf zugreifen zu können.
  3. Vor dem Auswerfen wird mit diesem Befehl die Bereitstellung aller Volumes auf dem Gerät aufgehoben, die bereitgestellt wurden.
  4. Wenn Volumes verwendet werden, schlägt dieser Befehl wie beim Aufheben der Bereitstellung fehl, mit der Ausnahme, dass einige Volumes möglicherweise nicht bereitgestellt werden und einige Volumes möglicherweise weiterhin bereitgestellt bleiben.
Danorton
quelle
1
Ich musste auch verwenden sudo, um diesen Befehl zu beenden (alles, was es tun würde, war das Laufwerk zu trennen, bevor ich sagte, dass es die Datei nicht öffnen konnte). Ansonsten hilfreiche Antwort.
GDP2
Unterschätzte Antwort in diesem Thread. Schauen Sie sich einfach ein mit FAT32 verbundenes USB-Laufwerk an und sehen Sie, dass das Entfernen und Auswerfen nur im Dateiexplorer (dh: nautilus) einen großen Unterschied darstellt. Ein einfacher Sansa-Clip würde dies ebenfalls veranschaulichen.
Wolke
Das Gerät ist bei der Ausführung von lsusb noch vorhanden. Sie müssen also nicht das gesamte USB-Subsystem zurücksetzen. Nur das Gerät reicht aus. Sie können diese verwenden usbreset zu tun github.com/jkulesza/usbreset github.com/CWempe/usbreset Die usbreset.c Dateien in beiden Projekten sind identisch,
Hannes
Woher weiß ich, dass "sda" die richtige ist? Kann ich den realen Gerätenamen sda, sdb usw. zuordnen?
Jürgen K. vor
38

ejectwird funktionieren, aber den Job in Bezug auf rotierende USB- Laufwerke nicht wirklich "beenden" .

Der beste Weg, eine externe USB-Festplatte nach dem ordnungsgemäßen Abmelden abzuziehen , ist:

udisks --detach /dev/sdb

Dies führt normalerweise dazu, dass das Laufwerk ordnungsgemäß herunterfährt.

Genau die aktuelle Implementierung :

  • sendet SCSI-Sync-Cache-Befehl,
  • sendet SCSI-Stoppbefehl,
  • hebt die Bindung des USB-Speicherkerntreibers auf,
  • schaltet das USB-Gerät aus (Stromversorgung),
  • Deaktiviert / entfernt es logischerweise von seinem USB-Anschluss.

Dieser Vorgang ähnelt dem hier vorgeschlagenen manuellen Verfahren . Die erste Antwort war auf askubuntu .

BEARBEITEN: Wie g.rocket betont , kann dieser Befehl auch äquivalent sein:

udisksctl power-off -b /dev/sdb
Totor
quelle
Auf meinem Ubuntu ist Onyl, udisksctldas keine --detachOtion hat, verfügbar. Was ist in diesem Fall zu tun? Dankeschön.
Wakan Tanka
@WakanTanka du installierst udisks.
Totor
Wie kann ich installieren udisks? Es ist nicht auf meinem System. Ich habe das Paket gefunden udisks2, aber das nicht gemacht udisksoder zur udisks2 Verfügung gestellt.
Martin Thoma
5
@WakanTanka udisksctl power-off -b /dev/sdwhateverscheint dasselbe zu tun.
g.rocket
@ g.rocket Antwort entsprechend aktualisiert. Danke.
Totor
8

Manuelle Schritte zum Abmelden von disk / dev / sdb (Erfordert sudo):

echo 'offline' > /sys/block/sdb/device/state
echo '1' > /sys/block/sdb/device/delete

Dadurch wird das Gerät vollständig ausgeschaltet und vom System getrennt. Es wird erst wieder erkannt, wenn es getrennt und wieder angeschlossen wird.

Tony George
quelle
2
FWIW das ist das einzige, was für mich in einem Xen dom0 mit einer externen USB-Station funktioniert - die Befehle eject und udisks gaben Fehler aus.
GS - Entschuldige dich bei Monica am
1
Ich habe danach gesucht, bin im Dracut-Notfallmodus und habe keinen Zugriff auf andere Funktionen. Vielen Dank!
Nassiel
hdparm -Yist auch praktisch für SATA / IDE-Laufwerke.
Walf
6

Wenn Sie die eject (1) -Manpage sorgfältig lesen , können Sie feststellen, dass es 4 Methoden zum Auswerfen gibt:

   -r   This  option specifies that the drive should be ejected using a CDROM
        eject command.

   -s   This option specifies that the drive should  be  ejected  using  SCSI
        commands.

   -f   This option specifies that the drive should be ejected using a remov‐
        able floppy disk eject command.

   -q   This option specifies that the drive should be ejected using  a  tape
        drive offline command.

Wenn Sie Eject auf HDD / SCSI aufrufen, wird ein ioctl(fd, SG_IO, (void *)&io_hdr);Befehl ausgegeben (Kopieren von eject.cQuellen).

Dies entspricht dem sicheren Entfernen des Geräts in MS Windows oder MaxOSX.

Für einige Geräte haben diese spezielle Mittelwerte. Zum Beispiel Kindle 3, nachdem der Befehl zum Auswerfen in den Lademodus versetzt wurde und das Surfen auf dem Gerät zulässt, während der Bildschirm gesperrt war.

Andere Dienstprogramme tun dasselbe

scsi-spin --force --down /dev/sda
gavenkoa
quelle
3

"Auswerfen" hat keine Bedeutung für Hardware ohne ein Fach oder einen anderen Lademechanismus (ich gehe davon aus, dass es auch mit Bandlaufwerken funktioniert).

Das Testen mit einem externen USB-Stick zeigt jedoch, dass dies ejectähnlich funktioniert umount- mit dem Nebeneffekt, dass die Geräteknoten verschwinden, z

% ls  /dev/sdc*
/dev/sdc  /dev/sdc1
% sudo eject /dev/sdc
% ls  /dev/sdc*
/dev/sdc

Beachten Sie, dass /dev/sdc1verschwunden ist.

Renan
quelle
1
Ich habe es noch nie mit Bändern versucht (das mt rewofflist bequemer, weil es auch zurückspult), aber es funktioniert mit motorisierten Diskettenlaufwerken, wie sie auf alten Macs und Sun-Workstations zu finden sind.
Alexios
@ Alexios interessant.
Renan
3

In der OSX-Kommandozeile sollten Sie diskutil verwenden, wobei LABEL die Bezeichnung Ihres USB-Laufwerks ist.

diskutil eject /Volumes/<LABEL>
efesaid
quelle
2

udisks --detach /dev/sdXDabei ist (X) der letzte Buchstabe Ihres USB-Geräts. Es funktioniert gut auf jedem Linux-System.

victorx66
quelle
Ihre Antwort ist in Ordnung, obwohl es vielleicht ein bisschen kurz ist. Ich würde vorschlagen, mehr auszuarbeiten: Was dieser Befehl tut, wie, warum ist das, was Sie vorschlagen, etc.
user259412
0

OK, ich werde versuchen, dies besser zu erklären:

Der Befehl udisks entfernt alle im System installierten oder installierten USB-Geräte vollständig und schaltet sie aus. Der Befehl unmount deaktiviert lediglich die Partition, dh dev / sdb1 oder was auch immer, aber der USB ist noch im System vorhanden.

Also ist nicht das selbe aushängen, auswerfen und abnehmen

udisks = usb ausschalten

umount = hänge einfach die Partition ab, nicht das ganze pendrive

eject = derselbe oder sehr nahe am Befehl umount

victorx66
quelle