弹出USB驱动器/弹出命令


55

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

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


3
相关:的相反eject /dev/sdXIS sg_start -s /dev/sdX(从sg3_utils包),都使用SCSI命令发送到设备。
雪人

Answers:


15

不。他们也不必那样做。eject用于打开无法直接从中拉出介质的光盘驱动器。

卸载对于USB / eSATA / etc就足够了。存储设备。


嗯,我在/ dev / sda的某个地方看到弹出硬盘。我想当时的参考是错误的。
乔·巴尔

您可以做到,但是如果有的话它通常做得并不多。
Ignacio Vazquez-Abrams'4

1
假定设备是首先安装的,并且带有另一套大假设(其中有一个您可以读取的文件系统)。想象一下,您要擦除一堆外部驱动器-它们可能永远不会挂载。弹出是正确的使用方法。
詹姆斯·摩尔

1
如果我以往任何时候都不能确定,我sync猛拉出来之前
EkriirkE

大胖警告:这并非完全正确。如果不这样做,eject则底层USB设备驱动程序可能仍(尝试)写入后umount返回。如果驱动器具有状态LED,则可以清楚地看到。umount终止后立即摇晃USB记忆棒是RECIPE FOR DISASTER。
ZioByte

77

是。例如:

sudo eject /dev/sda

此处表明您需要机械弹出硬件的其他答案不正确。

卸载与弹出不同。

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

1
我还必须使用sudo该命令来完成操作(要做的就是卸载驱动器,然后说它无法打开文件)。除此之外,有用的答案。
2016年

在这个线程中被低估的答案。只需看一下安装在FAT32上的拇指驱动器,注意仅在文件资源管理器(即nautilus)中,卸载和弹出有何不同。一个简单的Sansa剪辑也将有助于证明这一点。

执行lsusb时,该设备仍然存在。因此,您不必重置整个USB子系统。仅设备就足够了。您可以使用usbreset做到这一点github.com/jkulesza/usbreset github.com/CWempe/usbreset两个项目中的usbreset.c文件完全相同,
Hannes

38

eject可以使用,但对于USB 旋转驱动器并不能真正“完成工作” 。

正确卸载后,拔出USB外部硬盘驱动器的最佳方法是:

udisks --detach /dev/sdb

这通常会使驱动器正常旋转。

准确地说,当前的实现

  • 发送SCSI sync-cache命令,
  • 发送SCSI停止命令,
  • 取消绑定USB存储内核驱动程序,
  • 挂起USB设备(电源),
  • 从逻辑上将其从其USB端口禁用/移除。

此过程接近此处建议的手动过程。最初的答案是关于askubuntu

编辑:另外,正如g.rocket指出的,此命令可能等效:

udisksctl power-off -b /dev/sdb

在我的udisksctl没有--detach药水的ubuntu onyl 上可用。在这种情况下该怎么办?谢谢。
Wakan Tanka'1

@WakanTanka安装udisks
Totor

如何安装udisks?它不在我的系统上。我找到了该软件包udisks2,但没有 提供udisksudisks2可用。
马丁·托马

5
@WakanTanka udisksctl power-off -b /dev/sdwhatever似乎也做同样的事情。
g.rocket's

@ g.rocket答案已相应更新。谢谢。
Totor

8

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

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

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


2
FWIW这是在带有外部USB通讯座的Xen dom0中对我唯一有效的方法-弹出和udisks命令给出了错误。
GS-向Monica致歉,

1
我正在搜索此文件,我处于紧急紧急模式,但无法访问任何其他功能。谢谢!
Nassiel

hdparm -Y对于SATA / IDE驱动器也很方便。
沃尔夫

6

如果您仔细阅读了eject(1)手册页,您会发现有四种弹出方法:

   -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

3

对于没有托盘或其他装载装置的硬件,“弹出”没有意义(我认为它也适用于磁带机)。

但是,使用外部USB闪存驱动器进行测试表明,其eject工作原理非常类似umount-具有使设备节点消失的副作用,例如

% ls  /dev/sdc*
/dev/sdc  /dev/sdc1
% sudo eject /dev/sdc
% ls  /dev/sdc*
/dev/sdc

请注意/dev/sdc1已消失。


1
决不带(试了mt rewoffl更方便,因为它也倒带),但它确实有像那些旧Mac和Sun工作站发现电动软盘驱动器的工作。
Alexios'4

@Alexios很有趣。
雷南

3

在osx命令行中,您应该使用diskutil,其中LABEL是USB驱动器的标签。

diskutil eject /Volumes/<LABEL>

2

udisks --detach /dev/sdX其中(X)是USB设备的最后一个字母。它可以在任何Linux系统上正常工作。


您的回答还可以,尽管可能有点短。我建议更详细地说明:此命令做什么,如何,为什么你认为这是什么,等等
user259412

0

好吧,我会尽力解释一下:

udisks命令完全删除并关闭系统中已安装或连接的任何USB设备,然后关闭电源。unmount命令只是卸载分区,即:dev / sdb1或系统中仍然存在的usb。

所以不是一样的卸载,弹出和分离

udisks =关闭USB电源

umount =只是卸载分区而不是整个pendrive

弹出=与umount命令相同或非常接近

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.