外接 USB 硬碟、WD Elements,不會自行斷電

外接 USB 硬碟、WD Elements,不會自行斷電

我擁有 Seagate Free Agent 外接硬碟已有 4-5 年了。插入並完成文件傳輸後,我將單擊選單“安全刪除”。然後它會優雅地自行關閉,停止內部磁碟的旋轉。如果觸碰我就能感覺到。此外,電源燈也會熄滅。

最近我買了一個新的外接硬碟,WD Elements。如果我對此硬碟發出「安全刪除」命令,它只會被卸載,但不會自行關閉電源,磁碟也會繼續旋轉,我在觸摸時可以感覺到。我還嘗試了 Ubuntu 附帶的“磁碟”應用程式中的“關閉驅動器電源”按鈕。然後,它也只是被卸載。

我希望在手動拔下 WD Elements 硬碟之前先正常關閉它。我認為在設備自行停止之前強行拔掉插頭可能會縮短其使用壽命。

有沒有其他命令或程式可以幫助我做到這一點?

答案1

您需要一個額外的軟體包,其中包含一個實用程式來實際關閉 WD 電源,因為 WD 不支援開箱即用的 Linux:

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

其中XY是與您的磁碟對應的字母。

答案2

到目前為止,我還沒有在文件管理器中找到“安全彈出”的簡單替代方法,因此這是我在這裡使用命令列的理由。

首先,您需要找出您的外接硬碟裝置 ID 或區塊 ID。然後您可以使用 或udisksudisksctl卸載並實際關閉設備電源。我已經回答了相關問題前一段時間,剛開始使用ubuntu,所以我建議你也參考一下。基本上,我使用udisks --unmount /dev/sdb1 && udisks --detach /dev/sdbsdb1 是安裝點,sdb 是實際磁碟。

您可以lsblk透過掛載點和大小來使用和識別它;另一方面,您可以使用udisksctl status.例如,我現在連接了 Sandisk Cruiser USB 驅動器。命令的輸出如下: 在此輸入影像描述

正如您所看到的,兩個報告都表明我的 USB 驅動器被識別為 /dev/sdc。每次你插入一個 USB 裝置時,它都會被識別為不同的字母,sdb、sdc、sdf 等等,而 sda 始終是你的硬碟。

udisks --unmount /dev/sdc1 && udisks --detach /dev/sdc因此,就我而言,我會按照 Fabby 的建議彈出 USB 。對於我使用的單行,我注意到裝置 ID 被保留,即,如果我彈出 USB 並重新連接它,它仍然給出裝置sdc名稱。

提示:您可以用來udisksctl status | grep -i wd僅顯示外部硬碟的資訊。

現在,這是我純粹為了好玩而做的事情,但您可能會發現它很有用並適合您自己的需求。如果我們可以編寫一個腳本來為我們執行安全彈出怎麼辦?

我們需要讓 shell 知道外部硬碟或 USB 的區塊 ID。該命令的輸出是什麼:udisksctl status | grep -i sandisk | xargs echo?它將是這樣的:SanDisk Cruzer Glide 1.27 2005425573077FA0AA67 sdd,或者換句話說,有關 usb 的信息,以空格分隔,設備 id 是最後一個參數,或第 6 個參數。這裡我們可以使用 cut 指令來擷取它,如下所示:udisksctl status | grep -i sandisk | xargs echo | cut -d' ' -f6

當然,對於你來說,你必須使用udisksctl status | grep -i wd | xargs echo併計算你的區塊 id 是哪個元素,然後使用適當的數字cut -d' ' -fx

接下來,我整理了腳本remove-usb.sh。這裡是:

#!/bin/sh

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


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

接下來,將其放在我的 /home/user/bin 資料夾中,chmod +x /home/user/bin/remove-usb.sh。不要忘記將 bin 資料夾新增到你的道路。現在您也可以建立一個 .桌面文件或者使腳本在檔案總管中可執行

這是正在運行的腳本 在此輸入影像描述

答案3

下面的 shell 腳本可以幫我完成這項工作。

#!/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

它實際上是@Serg 和@Fabby 帖子中的想法的結合。

相關內容