Éjecter les lecteurs USB / command d'éjection

Je sais que la command d' eject peut être utilisée pour éjecter presque n'importe quel composant matériel connecté, mais peut-elle être utilisée pour éjecter des lecteurs USB?

Est-il possible d'éjecter des lecteurs USB et des disques durs externes avec la command d' eject ?

Non. Ils n'ont pas non plus besoin d'être; eject est utilisé pour ouvrir les lecteurs optiques, où l'on ne peut pas tirer le média directement.

Le déassembly est suffisant pour USB / eSATA / etc. périphériques de stockage.

Oui. Par exemple:

 sudo eject /dev/sda 

D'autres réponses qui indiquent que vous avez besoin d'un matériel d'éjection mécanique sont incorrectes.

Déassembly n'est pas la même chose que l'éjection.

  1. Si vous démontez un volume, vous pouvez le remonter immédiatement, car le périphérique sous-jacent est toujours disponible. Dans certaines situations, cela pourrait présenter un risque pour la security. En éjectant l'appareil, seule une réinitialisation du sous-système USB (par exemple un redémarrage) rechargera l'appareil.
  2. En éjectant le périphérique, vous désactivez efficacement tout autre access au périphérique. Seule une réinitialisation du sous-système USB (par exemple un redémarrage) rechargera le périphérique. Sinon, vous devez physiquement déconnecter le périphérique USB et le reconnecter pour pouvoir y accéder à nouveau.
  3. Avant d'éjecter, cette command démontera tous les volumes du périphérique qui ont été montés.
  4. Si les volumes sont utilisés, cette command échouera comme avec un déassembly, sauf que certains volumes peuvent être démontés et que certains volumes peuvent restr montés.

eject fonctionnera, mais ne sera pas vraiment "terminer le travail" en ce qui concerne les lecteurs rotatifs USB.

La meilleure façon de détwigr un disque dur externe USB après un déassembly correct est la suivante:

 udisks --detach /dev/sdb 

Cela entraîne généralement le lecteur à tourner avec élégance.

Précisément, la mise en œuvre actuelle :

  • envoie la command SCSI sync-cache,
  • envoie la command d'arrêt SCSI,
  • dissocie le pilote du kernel usb-storage,
  • suspend le périphérique USB (alimentation),
  • le désactive / le supprime logiquement de son port USB.

Ce process est proche de la procédure manuelle suggérée ici . La réponse initiale était sur askubuntu .

EDIT: Aussi, comme g.rocket l' indique, cette command peut être équivalente:

 udisksctl power-off -b /dev/sdb 

"Ejecter" n'a aucune signification pour le matériel sans plateau ou autre mécanisme de chargement (je suppose qu'il fonctionne aussi avec les lecteurs de bande).

Cependant, le test avec une key USB externe indique que l' eject fonctionne comme umount – avec l'effet secondaire de faire disparaître les noeuds de l'appareil, par exemple

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

Notez que /dev/sdc1 a disparu.

Si vous lisez attentivement la page de manuel d' éjection (1) , vous pouvez voir qu'il existe 4 methods d'éjection:

  -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. 

Lorsque vous appelez éjecter sur disque dur / SCSI ioctl(fd, SG_IO, (void *)&io_hdr); command (copy de sources eject.c ).

Ceci est équivalent lorsque vous retirez le périphérique en toute security dans MS Windows ou MaxOSX.

Pour certains appareils cela a un moyen spécial. Par exemple, le Kindle 3 après l' éjection de la command a été déplacé en mode de chargement et autorisé la navigation sur le périphérique, alors que l'écran était verrouillé.

Un autre utilitaire fait la même chose, comme ça

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

Dans la command line osx, vous devriez utiliser diskutil où LABEL est l'label de votre lecteur USB.

 diskutil eject /Volumes/<LABEL> 

udisks --detach /dev/sdX où (X) est la dernière lettre de votre périphérique USB. Cela fonctionne bien sur n'importe quel système Linux.

OK, je vais essayer d'expliquer cela mieux:

udisks command complètement retirer et mettre hors tension tout périphérique USB monté ou attaché dans la command de déassembly du système juste démonter la partition c'est à dire: dev / sdb1 ou autre chose, mais l'USB est toujours présent dans le système.

Ce n'est donc pas le même déassembly, éjection et détachement

udisks = éteindre l'usb

umount = démontez simplement la partition et non la pendrive entière

éjecter = la même ou très proche de la command umount

Étapes manuelles pour démonter le disque / dev / sdb (Requiert sudo):

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

Cela éteindra complètement l'appareil et le détachera du système. Il ne sera pas détecté à nouveau jusqu'à ce qu'il soit déconnecté et ré-attaché.