diskutil eject : comment éjecter des disques depuis le Terminal du Mac

Éjectez n'importe quel disque Mac depuis le Terminal avec diskutil, y compris en forçant le démontage d'un volume qui refuse de s'éjecter et en utilisant lsof pour trouver ce qui le retient.

(Updated )

Le Finder vous dit que le disque est en cours d’utilisation. Il ne vous dit pas ce qui l’utilise ni quoi faire à ce sujet. Le Terminal fait les deux.

Réponse rapide : exécutez diskutil eject /Volumes/YourDriveName pour éjecter un disque depuis le Terminal. En cas d’échec, utilisez sudo lsof /Volumes/YourDriveName pour voir ce qui bloque l’éjection, kill <PID> pour arrêter le processus fautif, puis éjectez à nouveau. En dernier recours, diskutil unmountDisk force /dev/diskN force le démontage du disque, mais ne faites cela que lorsque rien n’est en cours d’écriture.

Si vous êtes à l’aise avec la ligne de commande, le Terminal est le moyen le plus puissant de gérer les éjections récalcitrantes sur macOS. Et si vous n’êtes pas encore à l’aise, ces commandes constituent un bon point de départ.

Éjection de base avec diskutil eject

Le moyen le plus direct d’éjecter un disque externe depuis le Terminal du Mac :

diskutil eject /Volumes/YourDriveName

Remplacez YourDriveName par le nom réel de votre disque, exactement tel qu’il apparaît dans le Finder. Si le nom contient des espaces, mettez-le entre guillemets :

diskutil eject "/Volumes/My Drive"

Cela revient au même que cliquer sur le bouton d’éjection dans le Finder. Si ça marche, le disque se démonte proprement et c’est terminé. Si ça échoue, vous obtenez un message d’erreur bien plus instructif que tout ce que le Finder fournit.

Vous pouvez aussi démonter sans éjecter (le disque reste visible dans Utilitaire de disque mais n’est pas monté) :

diskutil unmount /Volumes/YourDriveName

La différence compte pour les disques à plusieurs partitions. unmount retire un volume. eject retire l’appareil physique et tous ses volumes d’un coup.

Trouver l’identifiant de votre disque avec diskutil list

Avant d’utiliser des commandes plus avancées, il vous faut l’identifiant de votre disque. Listez tous les disques connectés :

diskutil list

La sortie affiche chaque disque et ses partitions. Votre disque externe sera quelque chose comme disk4 ou disk5. Les disques internes sont généralement disk0 et disk1.

Pour un aperçu plus lisible des seuls disques externes :

diskutil list external

Une fois l’identifiant du disque connu, vous pouvez aussi éjecter en utilisant le chemin /dev/ plutôt que le nom du volume :

diskutil eject /dev/disk4

C’est utile lorsque le nom du volume contient des caractères inhabituels ou lorsque le volume n’est pas monté mais que le disque est encore connecté.

Comment éjecter tous les disques externes d’un coup

Si vous devez éjecter tous les disques externes en une seule commande, il existe deux approches.

En utilisant diskutil pour trouver et éjecter tous les disques externes :

diskutil list external | grep -o 'disk[0-9]*$' | while read disk; do diskutil eject "/dev/$disk"; done

Ou en utilisant AppleScript depuis le Terminal, qui reproduit ce que fait le Finder :

osascript -e 'tell application "Finder" to eject (every disk whose ejectable is true)'

L’approche AppleScript n’éjecte que les disques que le Finder considère comme éjectables. Elle ignore votre disque de démarrage et les volumes réseau, ce qui est généralement ce que vous voulez.

Forcer le démontage quand diskutil eject échoue

Si une éjection normale échoue avec une erreur du type « impossible de démonter le disque », forcez-la :

diskutil unmount force /Volumes/YourDriveName

Ou démontez tous les volumes d’un disque précis d’un coup :

diskutil unmountDisk force /dev/disk4

Le démontage forcé indique à macOS de libérer le volume quel que soit ce qui l’utilise. C’est plus maîtrisé que de débrancher physiquement le disque (le système vide tout de même les caches et notifie les processus), mais il n’attend pas que les processus ferment proprement leurs fichiers.

Utilisez le démontage forcé lorsque vous savez que rien d’important n’est en cours d’écriture. C’est l’équivalent en ligne de commande de l’éjection forcée depuis Utilitaire de disque. Consultez notre guide sur quand forcer l’éjection est sûr ou risqué avant d’utiliser ceci sur un disque qui était en cours d’utilisation.

Trouver ce qui bloque l’éjection avec lsof

Voici la commande qui rend le Terminal inestimable pour les problèmes d’éjection :

lsof /Volumes/YourDriveName

lsof signifie « list open files » (lister les fichiers ouverts). Elle affiche tous les processus ayant un fichier ouvert sur ce volume : le nom du processus, son identifiant (PID), l’utilisateur qui l’exécute et le fichier ouvert. (Pour une présentation ciblée des options et schémas d’usage de lsof, voyez notre guide de la commande lsof pour les utilisateurs de Mac.)

Pour des résultats complets (y compris les processus système), exécutez-la avec sudo :

sudo lsof /Volumes/YourDriveName

Sans sudo, vous ne voyez que les processus appartenant à votre compte utilisateur. Les processus système comme mds (Spotlight) ou backupd (Time Machine) n’apparaîtront pas. Avec sudo, vous voyez tout ce qui maintient réellement le disque ouvert.

Lire la sortie de lsof

La sortie ressemble à ceci :

COMMAND   PID   USER   FD   TYPE   DEVICE   SIZE/OFF   NODE   NAME
mds       123   root   12r  REG    1,8      4096       789    /Volumes/MyDrive/.Spotlight-V100/...
Finder    456   aaron  15r  DIR    1,8      1024       2      /Volumes/MyDrive
Dropbox   789   aaron  8u   REG    1,8      8192       345    /Volumes/MyDrive/Projects/.dropbox

Les colonnes qui comptent le plus :

  • COMMAND : le nom du processus, qui vous indique ce qui bloque l’éjection.
  • PID : l’identifiant du processus, que vous utiliserez pour tuer le processus si nécessaire.
  • FD : descripteur de fichier et mode d’accès. r signifie lecture, w signifie écriture, u signifie lecture/écriture. Si vous voyez w ou u, quelque chose écrit activement sur le disque, et forcer l’éjection est risqué.
  • NAME : le fichier précis auquel on accède, qui révèle souvent exactement pourquoi le processus est là.

Coupables fréquents : mds (indexation Spotlight), backupd (Time Machine), Dropbox, Google Drive, le Finder lui-même. Consultez nos analyses détaillées sur Spotlight qui bloque l’éjection et iCloud/Dropbox qui empêchent l’éjection pour des solutions ciblées.

Tuer les processus bloquants

Quittez les apps prises en charge depuis la barre des menus. Les processus système sont traités séparément et peuvent nécessiter d’attendre ou d’éteindre le Mac. Enregistrez votre travail, terminez les copies et sauvegardes, puis quittez les apps normalement avant de réessayer. Forcer à quitter ou à éjecter peut perdre des données ; Ejecta ne certifie pas la sécurité des écritures.

kill 789

Cela envoie un signal de terminaison en douceur. Le processus a l’occasion de fermer ses fichiers et de faire le ménage. Laissez-lui quelques secondes pour se terminer, puis réessayez d’éjecter.

S’il ne répond pas à un kill en douceur :

kill -9 789

Forcer à quitter est un dernier recours. Cela peut perdre du travail non enregistré ou interrompre une écriture. Enregistrez d’abord et laissez les transferts se terminer. Les noms des processus Spotlight ne prouvent pas un accès en lecture seule. Ne forcez pas mds ou mds_stores à quitter pour libérer un disque. Attendez, fermez vos apps et réessayez une éjection normale. Ejecta identifie ces processus, mais ne propose pas de fermeture ordinaire des processus système. Si le disque reste bloqué, enregistrez tout et éteignez complètement le Mac avant de le débrancher.

Enregistrez votre travail, terminez les copies et sauvegardes, puis quittez les apps normalement avant de réessayer.

Flux de travail complet de dépannage

Enregistrez votre travail, terminez les copies et sauvegardes, puis quittez les apps normalement avant de réessayer.

diskutil eject "/Volumes/YourDriveName"
sudo lsof "/Volumes/YourDriveName"

Les noms des processus Spotlight ne prouvent pas un accès en lecture seule. Ne forcez pas mds ou mds_stores à quitter pour libérer un disque. Attendez, fermez vos apps et réessayez une éjection normale. Ejecta identifie ces processus, mais ne propose pas de fermeture ordinaire des processus système. Si le disque reste bloqué, enregistrez tout et éteignez complètement le Mac avant de le débrancher.

Un nom de processus ou une liste de fichiers ouverts ne prouve pas qu’aucune écriture n’est en cours. Enregistrez votre travail, terminez les copies et sauvegardes, puis quittez les apps normalement avant de réessayer. Forcer à quitter ou à éjecter peut perdre des données ; Ejecta ne certifie pas la sécurité des écritures.

Variantes de diagnostic utiles

Vérifiez si Spotlight en particulier retient votre disque :

lsof /Volumes/YourDriveName | grep mds

Listez uniquement les noms de processus uniques qui bloquent l’éjection (sans lignes en double) :

lsof /Volumes/YourDriveName | awk '{print $1}' | sort -u

Surveillez les E/S disque en temps réel pour voir si quelque chose écrit activement :

sudo fs_usage -f diskio | grep YourDriveName

Cela tourne en continu et affiche chaque opération disque au fur et à mesure. Appuyez sur Contrôle-C pour arrêter. Utilisez ceci lorsque lsof montre un processus mais que vous n’êtes pas sûr qu’il écrive activement ou qu’il garde simplement un descripteur obsolète.

Quand le Terminal demande plus d’efforts qu’il n’en vaut

Ces commandes sont puissantes et, une fois que vous les avez utilisées quelques fois, elles deviennent une seconde nature. Mais il y a un coût réel à passer de votre travail à une fenêtre du Terminal : exécuter des commandes de diagnostic, analyser une sortie technique, décider quel PID il est sûr de tuer.

Ejecta: Ejecta propose un diagnostic gratuit des disques sans essai limité dans le temps. La licence payante débloque la fermeture et l’éjection pour les apps prises en charge, Tout éjecter et les commandes Time Machine. Les processus système peuvent nécessiter une attente, une autorisation ou l’arrêt du Mac. Enregistrez et terminez les transferts d’abord.

Sans limite d’ordinateurs ni d’activations. Demande de remboursement sous 30 jours.

Ejecta propose un diagnostic gratuit des disques sans essai limité dans le temps. La licence payante débloque la fermeture et l’éjection pour les apps prises en charge, Tout éjecter et les commandes Time Machine. Les processus système peuvent nécessiter une attente, une autorisation ou l’arrêt du Mac. Enregistrez et terminez les transferts d’abord.

Acheter - $29 $9.99