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 X
und Y
die 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 udisks
oder 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/sdb
wobei sdb1 der Einhängepunkt und sdb die eigentliche Festplatte ist.
Sie können lsblk
es 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:
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/sdc
oder 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 wd
um 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 echo
und 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
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.