Externe USB-Festplatte, WD Elements, schaltet sich nicht von selbst aus

Externe USB-Festplatte, WD Elements, schaltet sich nicht von selbst aus

Ich besitze seit 4-5 Jahren eine externe Festplatte von Seagate Free Agent. Nachdem ich sie angeschlossen und die Dateiübertragungen abgeschlossen habe, klicke ich auf das Menü „Sicher entfernen“. Dann fährt sie sich ordnungsgemäß herunter und stoppt das Drehen der Festplatte im Inneren. Ich kann es fühlen, wenn ich es berühre. Außerdem ist die Betriebsanzeige aus.

Ich habe mir vor Kurzem eine neue externe Festplatte gekauft, WD Elements. Wenn ich für diese Festplatte „Sicher entfernen“ auswähle, wird sie einfach ausgehängt, schaltet sich aber nicht selbst aus. Außerdem drehen sich die Festplatten weiter, was ich bei Berührung spüren kann. Ich habe auch die Schaltfläche „Laufwerk ausschalten“ in der Anwendung „Festplatten“ ausprobiert, die mit Ubuntu mitgeliefert wird. Auch dann wird sie einfach ausgehängt.

Ich möchte, dass die WD Elements-Festplatte sich selbst ordnungsgemäß herunterfährt, bevor ich sie manuell ausstecke. Ich gehe davon aus, dass das gewaltsame Ausstecken des Geräts, bevor es sich selbst stoppt, seine Lebensdauer verkürzen kann.

Gibt es einen anderen Befehl oder ein anderes Programm, das mir dabei hilft?

Antwort1

Sie benötigen ein zusätzliches Paket, das ein Dienstprogramm zum tatsächlichen Ausschalten des WD enthält, da WD Linux nicht standardmäßig unterstützt:

sudo apt-get install usdisks2
sudo udisksctl power-off --block-device /dev/XdY

wobei Xund Ydie Buchstaben sind, die Ihrer Festplatte entsprechen.

Antwort2

Bisher habe ich keine einfache Alternative zum „sicheren Auswerfen“ im Dateimanager gefunden, daher ist dies meine Begründung für die Verwendung der Befehlszeile hier.

Zuerst müssen Sie die Geräte-ID oder Block-ID Ihrer externen Festplatte herausfinden. Dann können Sie entweder udisksoder verwenden udisksctl, um das Gerät auszuhängen und tatsächlich auszuschalten. Ich habe geantwortetVerwandte Fragevor einiger Zeit, als ich gerade mit Ubuntu angefangen habe, also schlage ich vor, dass Sie auch darauf zurückgreifen. Grundsätzlich verwende ich, udisks --unmount /dev/sdb1 && udisks --detach /dev/sdbwobei sdb1 der Einhängepunkt und sdb die eigentliche Festplatte ist.

Sie können lsblkes anhand des Einhängepunkts und der Größe identifizieren; andererseits können Sie verwenden udisksctl status. Ich habe beispielsweise gerade ein USB-Laufwerk von Sandisk Cruiser angeschlossen. Die Ausgabe der Befehle ist die folgende: Bildbeschreibung hier eingeben

Wie Sie sehen, melden beide, dass mein USB-Laufwerk als /dev/sdc identifiziert wird. Jedes Mal, wenn Sie ein USB-Gerät anschließen, wird es mit unterschiedlichen Buchstaben identifiziert, sdb, sdc, sdf usw., während sda immer Ihre Festplatte ist.

In meinem Fall würde ich den USB-Stick mit udisks --unmount /dev/sdc1 && udisks --detach /dev/sdcoder alternativ mit dem, was Fabby vorgeschlagen hat, auswerfen. Mit dem Einzeiler, den ich verwende, habe ich festgestellt, dass die Geräte-ID erhalten bleibt, d. h. wenn ich den USB-Stick auswerfe und wieder anschließe, wird immer noch der Gerätename angezeigt sdc.

TIPP: Sie können verwenden, udisksctl status | grep -i wdum nur Informationen zur externen Festplatte anzuzeigen.

Hier ist etwas, das ich nur zum Spaß gemacht habe, aber Sie könnten es nützlich finden und an Ihre eigenen Bedürfnisse anpassen. Was wäre, wenn wir ein Skript schreiben könnten, das das sichere Auswerfen für uns übernimmt?

Wir müssen der Shell die Block-ID unserer externen Festplatte oder unseres USB mitteilen. Was wäre die Ausgabe dieses Befehls: udisksctl status | grep -i sandisk | xargs echo? Es wäre diese: SanDisk Cruzer Glide 1.27 2005425573077FA0AA67 sdd, oder anders gesagt Informationen über den USB , durch Leerzeichen getrennt, wobei die Geräte-ID das letzte oder das sechste Argument ist. Hier können wir den Befehl cut verwenden, um sie wie folgt zu extrahieren:udisksctl status | grep -i sandisk | xargs echo | cut -d' ' -f6

Natürlich müssten Sie für Sie verwenden udisksctl status | grep -i wd | xargs echound zählen, welches Element Ihre Block-ID ist, und dann die entsprechende Nummer verwenden aufcut -d' ' -fx

Als nächstes habe ich das Skript remove-usb.sh zusammengestellt. Hier ist es:

#!/bin/sh

DEVICE=$( udisksctl status | grep -i sandisk | xargs echo | cut -d' ' -f6 )


udisks --unmount /dev/$(echo $DEVICE)1 && udisks --detach /dev/$DEVICE

Als nächstes habe ich es in meinen /home/user/bin-Ordner gelegt, chmod +x /home/user/bin/remove-usb.sh. Vergessen Sie nicht, diesen Bin-Ordner hinzuzufügendein Weg. Jetzt können Sie auch eine erstellen.Desktop-DateioderSkript im Dateimanager ausführbar machen

Und hier ist das Skript in Aktion Bildbeschreibung hier eingeben

Antwort3

Das folgende Shell-Skript erledigt die Arbeit für mich.

#!/bin/sh

DEVICE=$(udisksctl status | grep -i "WD Elements" | xargs echo | cut -d' ' -f6)

udisks --unmount /dev/$(echo $DEVICE)1
sudo udisksctl power-off --block-device /dev/$DEVICE

Es handelt sich eigentlich um eine Kombination von Ideen aus den Posts von @Serg und @Fabby.

verwandte Informationen