在过去的 4-5 年里,我拥有一块 Seagate Free Agent 外置硬盘。插入并完成文件传输后,我将单击菜单“安全删除”。然后它会优雅地自行关闭,停止内部磁盘的旋转。如果触摸,我能感觉到。此外,电源指示灯也将熄灭。
最近我买了一个新的外部硬盘,WD Elements。如果我对该硬盘驱动器发出“安全删除”命令,它只会被卸载,但不会自行关闭,而且磁盘会继续旋转,触摸时我能感觉到。我还尝试了 Ubuntu 附带的“磁盘”应用程序中的“关闭驱动器电源”按钮。然后,它也只是被卸载。
我希望在手动拔下 WD Elements 硬盘驱动器之前正常关闭它。我假设在设备自行停止之前强行拔掉设备可能会缩短其使用寿命。
是否有任何其他命令或程序可以帮助我做到这一点?
您需要一个额外的软件包,其中包含一个实用程序来实际关闭 WD,因为 WD 不支持开箱即用的 Linux:
其中
X
和Y
是对应于您的磁盘的字母。到目前为止,我还没有在文件管理器中找到“安全弹出”的简单替代方法,所以这是我在这里使用命令行的理由。
首先,您需要找出您的外部硬盘驱动器设备 ID 或块 ID。然后您可以使用
udisks
或udisksctl
卸载并实际关闭设备电源。前段时间刚开始接触ubuntu的时候回答过相关问题,建议大家也参考一下。基本上,我使用udisks --unmount /dev/sdb1 && udisks --detach /dev/sdb
sdb1 是挂载点,sdb 是实际磁盘。您可以
lsblk
通过挂载点和大小来使用和识别它;另一方面,您可以使用udisksctl status
. 例如,我现在连接了一个 Sandisk Cruiser USB 驱动器。命令的输出如下:如您所见,两者都报告说我的 USB 驱动器被识别为 /dev/sdc。每次你插入一个 USB 设备时,它都会被识别为不同的字母,sdb、sdc、sdf 等等,而 sda 始终是你的硬盘驱动器。
因此,就我而言,我会按照 Fabby 的建议弹出 usb,
udisks --unmount /dev/sdc1 && udisks --detach /dev/sdc
或者按照 Fabby 的建议弹出 usb。使用我使用的单线,我注意到设备 ID 被保留,即,如果我弹出 usd 并重新连接它,它仍然提供设备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 放在一起。这里是:
接下来,将它放在我的 /home/user/bin 文件夹中,chmod +x /home/user/bin/remove-usb.sh。不要忘记将该 bin 文件夹添加到您的路径中。现在您还可以创建一个 . 桌面文件或在文件管理器中使脚本可执行
这是正在运行的脚本
以下 shell 脚本为我完成了这项工作。
它实际上结合了@Serg 和@Fabby 的帖子中的想法。