如何在卸载后自动关闭 USB 设备

如何在卸载后自动关闭 USB 设备

如何创建一个设置,以便如果我卸载 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

相关内容