如何创建一个设置,以便如果我卸载 USB 磁盘,它也会自动关闭?
答案1
一般来说,udisksctl
应该可以如果硬件支持它。并非所有 USB 磁盘都同样符合标准...
udisksctl power-off -b /dev/sdX
将尝试关闭磁盘:
$ udisksctl power-off --help
Usage:
udisksctl power-off [OPTION...]
Safely power off a drive.
Options:
-p, --object-path Object path for ATA device
-b, --block-device Device file for ATA device
--no-user-interaction Do not authenticate the user if needed
刚刚用几个不同的驱动器(Seagate BackupPlus 1000GB、带有 500GB 驱动器的 ICY-box)测试了这一点,它似乎可以工作。它在中国超便宜(0.90 美元)的 S-ATA-USB 适配器上不起作用...
您也可以尝试eject
命令 - 它将弹出命令发送到设备。这在许多情况下会导致设备减速。sudo eject /dev/sdX
- 但如果 udisksctl 不起作用,则它起作用的可能性很小。
答案2
据我所知,有些台式机会自动执行此操作,有些则不会。Plasma 不会执行此操作(https://bugs.kde.org/show_bug.cgi?id=270808)那里已经发布了一个简单的解决方法(https://bugs.kde.org/show_bug.cgi?id=270808#c64)。这是一个稍微改进的版本,将显示通知。
解决方法是向 DeviceNotifier 添加一个新操作,该操作将运行一个 bash 脚本来卸载并关闭设备。它没有测试所有极端情况,但在大多数情况下应该有效。只需添加以下两个文件。重新启动 kded5 后(或注销并重新登录后),可移动设备应该有一个新的操作“卸载并关闭 USB 设备”。
~/.local/bin/power-device-off (确保 chmod +x 这个)
#!/bin/bash
if udisksctl unmount -b $1; then
if udisksctl power-off -b $1; then
notify-send "Device $1 powered off and can be removed safely."
else
notify-send "Unmounted $1, but could not power down."
fi
else
notify-send "Could not unmount $1."
fi
~/.local/share/solid/actions/power-devices-off.desktop
[Desktop Entry]
X-KDE-Solid-Predicate=[ [ [ StorageVolume.ignored == false AND StorageVolume.usage == 'FileSystem' ] OR [ IS StorageAccess AND StorageDrive.driveType == 'Floppy' ] ] OR StorageAccess.ignored == false ]
Type=Service
Actions=open;
[Desktop Action open]
Name=Unmount and Power-Off USB device
Exec=power-device-off "%d"
Icon=emblem-unmounted