一些细节

一些细节

我知道eject该命令可用于弹出几乎所有连接的硬件组件,但它可以用于弹出 USB 驱动器吗?

是否可以使用 USB 驱动器和外部 HDD 弹出eject命令?

答案1

是的。例如:

sudo eject /dev/sda

这里其他表明您需要机械弹射硬件的答案是不正确的。

卸载与弹出不同。

  1. 如果卸载卷,您可以立即将其重新安装,因为底层设备仍然可用。在某些情况下,这可能会带来安全风险。通过弹出设备,只有 USB 子系统的重置(例如重新启动)才会重新加载设备。
  2. 通过弹出设备,您可以有效地禁用对该设备的任何进一步访问。只有重置 USB 子系统(例如重新启动)才会重新加载设备。否则,您必须物理断开 USB 设备并重新连接才能再次访问它。
  3. 在弹出之前,此命令将卸载设备上已安装的所有卷。
  4. 如果卷正在使用中,则此命令将与卸载一样失败,只不过某些卷可能会被卸载而某些卷可能仍处于装载状态。

答案2

Linuxeject可以工作,但不会真正“完成工作”关于 USB旋转驱动器。

首先,你eject /dev/sdb(或umount一切)。

然后,正确卸载后拔掉 USB 外置硬盘的最佳方法是:

    udisksctl power-off -b /dev/sdb

或者

    udisks --detach /dev/sdb

这通常会导致驱动器正常减速。

注意:与(前者已经安装在我的 Debian 上,后者还没有并且已经安装)udisksctl相比,可能是一个更“主流”的工具udisks批评的用于不必要的向上/向下旋转)。

一些细节

乌迪斯克斯克特尔

文档状态(关于关闭电源选项):

安排安全移除驱动器并关闭电源。在操作系统方面,这包括确保没有进程正在使用驱动器,然后请求将运行中的缓冲区和缓存提交到稳定的存储。关闭驱动器电源的确切步骤取决于驱动器本身和所使用的互连。对于通过 USB 连接的驱动器,其效果是 USB 设备将被取消配置,然后禁用它所连接的上游集线器端口。

请注意,由于某些物理设备包含多个驱动器(例如四合一闪存卡读卡器 USB 设备),关闭一个驱动器可能会影响其他驱动器。因此,与执行此操作相关的保证并不多。通常,效果是驱动器消失,就像拔掉插头一样。

udisk(已弃用?)

准确地说,目前的实施(截至 2014 年):

  • 发送 SCSI 同步缓存命令,
  • 发送 SCSI 停止命令,
  • 解除USB存储内核驱动程序的绑定,
  • 暂停USB设备(电源),
  • 从逻辑上禁用/从 USB 端口删除它。

此过程接近建议的手动过程这里。最初的答案是在阿斯库本图

答案3

卸载磁盘 /dev/sdb 的手动步骤(需要 sudo):

echo 'offline' > /sys/block/sdb/device/state
echo '1' > /sys/block/sdb/device/delete

这将完全关闭设备电源并将其与系统分离。在断开连接并重新连接之前,不会再次检测到它。

答案4

如果你仔细阅读弹出(1)man page 可以看到有4种弹出方法:

   -r   This  option specifies that the drive should be ejected using a CDROM
        eject command.

   -s   This option specifies that the drive should  be  ejected  using  SCSI
        commands.

   -f   This option specifies that the drive should be ejected using a remov‐
        able floppy disk eject command.

   -q   This option specifies that the drive should be ejected using  a  tape
        drive offline command.

你打电话时喷射在 HDD/SCSI 上,它发出ioctl(fd, SG_IO, (void *)&io_hdr);命令(从eject.c源复制)。

这相当于您在 MS Windows 或 MaxOSX 中安全删除设备。

对于某些设备来说,这有特殊的含义。例如Kindle 3之后喷射命令已移至充电模式并允许在屏幕锁定之前在设备上浏览。

另一个实用程序做同样的事情,就像这样

scsi-spin --force --down /dev/sda

相关内容