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/YourDriveNamepour éjecter un disque depuis le Terminal. En cas d’échec, utilisezsudo lsof /Volumes/YourDriveNamepour voir ce qui bloque l’éjection,kill <PID>pour arrêter le processus fautif, puis éjectez à nouveau. En dernier recours,diskutil unmountDisk force /dev/diskNforce 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.
rsignifie lecture,wsignifie écriture,usignifie lecture/écriture. Si vous voyezwouu, 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