web-dev-qa-db-ja.com

USBドライブの取り出し/コマンドの取り出し

ejectコマンドを使用して、接続されているほとんどすべてのハードウェアコンポーネントを取り出すことができますが、USBドライブを取り出すために使用できますか?

ejectコマンドでUSBドライブと外付けHDDを取り出すことはできますか?

58
Joe Barr

いいえ、必要はありません。 ejectは、光学式ドライブを開くために使用され、メディアを直接そこからプルすることはできません。

USB/eSATAなどの場合は、アンマウントで十分です。ストレージデバイス。

はい。例えば:

Sudo eject /dev/sda

機械的なイジェクトハードウェアが必要であることを示す他の回答は、ここでは正しくありません。

アンマウントはイジェクトと同じではありません。

  1. ボリュームをアンマウントした場合、基礎となるデバイスがまだ利用可能であるため、ボリュームをすぐにマウントして戻すことができます。 状況によっては、これによりセキュリティリスクが生じる可能性があります。デバイスをイジェクトすることにより、USBサブシステムのリセット(再起動など)のみがデバイスをリロードします。
  2. デバイスをイジェクトすることにより、デバイスへの以降のアクセスを効果的に無効にします。 USBサブシステムのリセット(再起動など)のみがデバイスをリロードします。そうでない場合は、USBデバイスを物理的に取り外し、再度アクセスするために再接続する必要があります。
  3. 排出する前に、このコマンドはマウントされていたデバイス上のすべてのボリュームをアンマウントします。
  4. ボリュームが使用中の場合、このコマンドはunmountの場合と同様に失敗します。ただし、一部のボリュームはマウント解除され、一部のボリュームはマウントされたままになる場合があります。
83
danorton

ejectは機能しますが、USB rotatingドライブに関しては実際には「ジョブを終了」しません。

USB外付けハードドライブを取り外す最良の方法適切なアンマウント後は、次のとおりです。

udisks --detach /dev/sdb

通常、これによりドライブが正常にスピンダウンします。

正確には、 現在の実装

  • sCSI sync-cacheコマンドを送信し、
  • sCSI停止コマンドを送信し、
  • usb-storageカーネルドライバーをアンバインドし、
  • uSBデバイスを一時停止(電源)、
  • uSBポートから論理的に無効化/削除します。

このプロセスは、推奨される手動の手順 ここ に近いものです。最初の答えは askubunt でした。

編集:また、g.rocketが指摘するように、このコマンドは同等である可能性があります:

udisksctl power-off -b /dev/sdb
42
Totor

ディスク/ dev/sdbを手動でアンマウントする手順(Sudoが必要):

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

これにより、デバイスの電源が完全にオフになり、システムから切り離されます。切断されて再接続されるまで、再度検出されることはありません。

12
Tony George

eject(1)のマニュアルページを注意深く読むと、排出する方法が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でejectを呼び出すと、ioctl(fd, SG_IO, (void *)&io_hdr);コマンドが発行されます(_eject.c_ソースからコピー)。

MS WindowsまたはMaxOSXでデバイスを安全に削除するため、これは同等です。

一部のデバイスでは、これには特別な意味があります。たとえば、Kindle 3のejectコマンドが充電モードに移行し、画面がロックされる前のデバイスでの閲覧を許可した後。

別のユーティリティはこのように同じことを行います

_scsi-spin --force --down /dev/sda
_
6
gavenkoa

Osxコマンドラインでは diskutil を使用する必要があります[〜#〜] label [〜#〜]はUSBのラベルですドライブ。

diskutil eject /Volumes/<LABEL>
3
efesaid

「イジェクト」は、トレイやその他のロードメカニズムがないハードウェアには意味がありません(テープドライブでも動作すると思います)。

ただし、外部USBフラッシュドライブでテストすると、ejectumountとほぼ同じように機能します。たとえば、デバイスノードを非表示にする副作用があります。

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

ご了承ください /dev/sdc1 消えました。

3
Renan

udisks --detach /dev/sdXここで、(X)はUSBデバイスの最後の文字です。どのLinuxシステムでも問題なく動作します。

2
victorx66

OK私はこれをよりよく説明しようとします:

udisksコマンドは、システムにマウントまたは接続されているすべてのUSBデバイスを完全に削除して電源をオフにします。unmountコマンドは、パーティションをマウント解除するだけです。つまり、dev/sdb1など、システムにUSBがまだ存在します。

したがって、アンマウント、イジェクト、デタッチは同じではありません

udisks = USBの電源を切る

umount =ペンドライブ全体ではなく、単にパーティションをアンマウントします

排出= umountコマンドと同じか非常に近い

0
victorx66