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.

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 — il vous indique ce qui bloque l’éjection.
  • PID : l’identifiant du processus — vous l’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 — il 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

Une fois connu le PID d’un processus bloquant, terminez-le proprement :

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

Cela force une terminaison immédiate. Le processus n’a pas l’occasion de faire le ménage. À utiliser en dernier recours — surtout pour les processus système.

Pour tuer tous les processus utilisant un volume précis en une seule commande :

sudo lsof -t /Volumes/YourDriveName | xargs kill

L’option -t fait que lsof n’affiche que les PID, et xargs les transmet à kill. Attention : cela tue tous les processus utilisant le disque, y compris ceux qui pourraient être au milieu d’un travail important.

Flux de travail complet de dépannage

Voici la séquence complète pour un disque qui refuse de s’éjecter :

# Étape 1 : essayez une éjection normale
diskutil eject /Volumes/YourDriveName

# Étape 2 : si ça échoue, voyez ce qui bloque
sudo lsof /Volumes/YourDriveName

# Étape 3 : tuez le processus fautif (remplacez PID par le numéro réel)
kill 12345

# Étape 4 : réessayez d'éjecter
diskutil eject /Volumes/YourDriveName

# Étape 5 : si c'est toujours bloqué, forcez le démontage
diskutil unmountDisk force /dev/disk4

La plupart des problèmes se résolvent à l’étape 3. Identifiez le bloqueur, tuez-le, éjectez proprement.

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 fait tout ce qui précède automatiquement. L’app surveille vos disques, identifie chaque processus bloquant et vous offre un bouton à un clic pour quitter chacun d’eux. Les mêmes informations que vous obtiendriez de sudo lsof, présentées visuellement directement dans votre barre des menus — aucune commande à retenir, aucune sortie à analyser.

Pour 9,99 $, vous obtenez un outil qui remplace tout ce flux de travail multi-étapes du Terminal par un seul clic. Si vous affrontez ce problème plus d’une fois par mois, il se rentabilise en frustration épargnée dès la première semaine. Essayez Ejecta gratuitement pendant 7 jours — sans Terminal.

Si vous préférez ne pas passer par le Terminal à chaque fois, Ejecta vous montre exactement quel processus bloque votre disque — et vous permet de le quitter d'un seul clic, directement depuis la barre des menus.

Acheter — $9.99