web-dev-qa-db-fra.com

Éjecter les lecteurs USB / commande d'éjection

Je sais que la commande eject peut être utilisée pour éjecter presque tous les composants matériels connectés, 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 commande eject?

58
Joe Barr

Non. Ils ne doivent pas non plus l'être; eject est utilisé pour ouvrir des lecteurs optiques, où l'on ne peut pas extraire directement le support.

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

15

Oui. Par exemple:

Sudo eject /dev/sda

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

Le démontage n'est pas la même chose que l'éjection.

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

eject fonctionnera, mais ne "terminera pas vraiment" le travail concernant les lecteurs USB rotatifs .

La meilleure façon de débrancher un disque dur externe USB, après un démontage correct , est:

udisks --detach /dev/sdb

Cela entraîne généralement un ralentissement progressif du lecteur.

Précisément, le implémentation actuelle :

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

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

EDIT: De plus, comme le souligne g.rocket , cette commande peut être équivalente:

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

Étapes manuelles pour démonter le disque/dev/sdb (nécessite 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 à nouveau détecté qu'après avoir été déconnecté et reconnecté.

12
Tony George

Si vous lisez attentivement la page de manuel eject (1), vous pouvez voir qu'il existe 4 méthodes 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 le disque dur/SCSI, il lance la commande ioctl(fd, SG_IO, (void *)&io_hdr); (copie à partir des sources eject.c).

Cela équivaut à retirer le périphérique en toute sécurité dans MS Windows ou MaxOSX.

Pour certains appareils, cela a une moyenne spéciale. Par exemple, Kindle 3 après éjecter la commande a été déplacée en mode de charge et autorise la navigation sur l'appareil, avant le verrouillage de l'écran.

Un autre utilitaire fait la même chose, comme ceci

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

Dans la ligne de commande osx, vous devez utiliser diskutil [~ # ~] label [~ # ~] est le label de votre clé USB conduire.

diskutil eject /Volumes/<LABEL>
3
efesaid

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

Cependant, les tests avec un lecteur flash USB externe indiquent que eject fonctionne un peu comme umount - avec pour effet secondaire de faire disparaître les nœuds 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.

3
Renan

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

2
victorx66

OK je vais essayer de mieux l'expliquer:

la commande udisks supprime et éteint complètement tout périphérique USB monté ou attaché dans la commande de démontage du système, il suffit de 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 la même chose à démonter, éjecter et détacher

udisks = éteindre l'USB

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

eject = identique ou très proche de la commande umount

0
victorx66