diskutil eject: cómo expulsar discos desde la Terminal de Mac

Expulsa cualquier disco de Mac desde la Terminal con diskutil — incluyendo cómo forzar el desmontaje de un volumen que no se expulsa y usar lsof para encontrar qué lo retiene.

El Finder te dice que el disco está en uso. No te dice qué lo está usando ni qué hacer al respecto. La Terminal hace las dos cosas.

Respuesta rápida: Ejecuta diskutil eject /Volumes/NombreDeTuDisco para expulsar un disco desde la Terminal. Si falla, usa sudo lsof /Volumes/NombreDeTuDisco para ver qué está bloqueando la expulsión, kill <PID> para detener el proceso causante, y luego expulsa de nuevo. Como último recurso, diskutil unmountDisk force /dev/diskN fuerza la salida del disco, pero hazlo solo cuando nada esté escribiendo activamente.

Si te sientes cómodo con la línea de comandos, la Terminal es la forma más poderosa de manejar las expulsiones de discos tercos en macOS. Y si todavía no te sientes cómodo con ella, estos comandos son un buen punto de partida.

Expulsión básica con diskutil eject

La forma más directa de expulsar un disco externo desde la Terminal de Mac:

diskutil eject /Volumes/NombreDeTuDisco

Reemplaza NombreDeTuDisco con el nombre real de tu disco — exactamente como aparece en el Finder. Si el nombre tiene espacios, enciérralo entre comillas:

diskutil eject "/Volumes/Mi Disco"

Esto hace lo mismo que hacer clic en el botón de expulsar del Finder. Si funciona, el disco se desmonta de forma limpia y terminaste. Si falla, recibes un mensaje de error más informativo que el que el Finder te da.

También puedes desmontar sin expulsar (el disco sigue visible en la Utilidad de Discos pero no está montado):

diskutil unmount /Volumes/NombreDeTuDisco

La diferencia importa en los discos de varias particiones. unmount quita un volumen. eject quita el dispositivo físico y todos sus volúmenes de una vez.

Encontrar el identificador de tu disco con diskutil list

Antes de usar comandos más avanzados, necesitas el identificador de tu disco. Lista todos los discos conectados:

diskutil list

La salida muestra cada disco y sus particiones. Tu disco externo será algo como disk4 o disk5. Los discos internos suelen ser disk0 y disk1.

Para una vista más legible de solo los discos externos:

diskutil list external

Una vez que conozcas el identificador del disco, también puedes expulsarlo usando la ruta /dev/ en lugar del nombre del volumen:

diskutil eject /dev/disk4

Esto es útil cuando el nombre del volumen contiene caracteres inusuales o cuando el volumen no está montado pero el disco sigue conectado.

Cómo expulsar todos los discos externos a la vez

Si necesitas expulsar todos los discos externos con un solo comando, hay dos enfoques.

Usando diskutil para encontrar y expulsar todos los discos externos:

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

O usando AppleScript desde la Terminal, que imita lo que hace el Finder:

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

El enfoque de AppleScript solo expulsa los discos que el Finder considera expulsables — se salta tu disco de arranque y los volúmenes de red, que suele ser lo que quieres.

Forzar el desmontaje cuando diskutil eject falla

Si una expulsión normal falla con un error como “no se pudo desmontar el disco”, fuérzala:

diskutil unmount force /Volumes/NombreDeTuDisco

O desmonta todos los volúmenes de un disco específico de una vez:

diskutil unmountDisk force /dev/disk4

El desmontaje forzado le dice a macOS que libere el volumen sin importar qué lo esté usando. Es más controlado que desconectar físicamente el disco — el sistema aún vacía las cachés y notifica a los procesos — pero no espera a que los procesos cierren los archivos de forma limpia.

Usa el desmontaje forzado cuando sepas que no se está escribiendo nada importante. Es el equivalente en línea de comandos a forzar la expulsión desde la Utilidad de Discos. Consulta nuestra guía sobre cuándo forzar la expulsión es seguro y cuándo es riesgoso antes de usar esto en un disco que estaba en uso activo.

Encontrar qué está bloqueando la expulsión con lsof

Este es el comando que hace que la Terminal sea invaluable para los problemas de expulsión:

lsof /Volumes/NombreDeTuDisco

lsof significa “list open files” (listar archivos abiertos). Muestra cada proceso que tiene un archivo abierto en ese volumen — el nombre del proceso, el ID del proceso (PID), el usuario que lo ejecuta y qué archivo está abierto. (Para un recorrido enfocado de las opciones y patrones de lsof, consulta nuestra guía del comando lsof para usuarios de Mac.)

Para resultados completos (incluyendo los procesos del sistema), ejecútalo con sudo:

sudo lsof /Volumes/NombreDeTuDisco

Sin sudo, solo ves los procesos que pertenecen a tu cuenta de usuario. Los procesos del sistema como mds de Spotlight o backupd de Time Machine no aparecerán. Con sudo, ves todo lo que realmente está reteniendo el disco abierto.

Leer la salida de lsof

La salida se ve más o menos así:

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

Las columnas que más importan:

  • COMMAND: El nombre del proceso — esto te dice qué está bloqueando la expulsión.
  • PID: El ID del proceso — lo usarás para terminar el proceso si hace falta.
  • FD: Descriptor de archivo y modo de acceso. r significa lectura, w significa escritura, u significa lectura/escritura. Si ves w o u, algo está escribiendo activamente en el disco, y forzar la expulsión es riesgoso.
  • NAME: El archivo específico al que se está accediendo — esto a menudo revela exactamente por qué el proceso está ahí.

Culpables comunes: mds (indexación de Spotlight), backupd (Time Machine), Dropbox, Google Drive, el propio Finder. Consulta nuestros análisis a fondo sobre Spotlight bloqueando la expulsión y iCloud/Dropbox impidiendo la expulsión para soluciones específicas.

Terminar los procesos que bloquean

Una vez que conozcas el PID de un proceso que bloquea, termínalo de forma cortés:

kill 789

Esto envía una señal de terminación cortés. El proceso tiene la oportunidad de cerrar archivos y hacer limpieza. Dale unos segundos para que salga, y luego intenta expulsar de nuevo.

Si no responde a una terminación cortés:

kill -9 789

Esto fuerza la terminación inmediata. El proceso no alcanza a hacer limpieza. Usa esto como último recurso — especialmente con los procesos del sistema.

Para terminar todos los procesos que usan un volumen específico con un solo comando:

sudo lsof -t /Volumes/NombreDeTuDisco | xargs kill

La opción -t hace que lsof muestre solo los PID, y xargs se los pasa a kill. Ten cuidado: esto termina todos los procesos que usan el disco, incluyendo los que podrían estar a mitad de un trabajo importante.

Flujo de trabajo completo de solución de problemas

Esta es la secuencia completa para un disco que no se expulsa:

# Paso 1: Intenta la expulsión normal
diskutil eject /Volumes/NombreDeTuDisco

# Paso 2: Si falla, ve qué está bloqueando
sudo lsof /Volumes/NombreDeTuDisco

# Paso 3: Termina el proceso causante (reemplaza PID con el número real)
kill 12345

# Paso 4: Intenta expulsar de nuevo
diskutil eject /Volumes/NombreDeTuDisco

# Paso 5: Si sigue atorado, fuerza el desmontaje
diskutil unmountDisk force /dev/disk4

La mayoría de los problemas se resuelven en el Paso 3. Identifica al bloqueador, termínalo, expulsa de forma limpia.

Variaciones útiles de diagnóstico

Verifica si específicamente Spotlight está reteniendo tu disco:

lsof /Volumes/NombreDeTuDisco | grep mds

Lista solo los nombres únicos de los procesos que bloquean la expulsión (sin líneas duplicadas):

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

Observa la E/S del disco en tiempo real para ver si algo está escribiendo activamente:

sudo fs_usage -f diskio | grep NombreDeTuDisco

Esto corre de forma continua y muestra cada operación de disco conforme sucede. Presiona Control-C para detenerlo. Usa esto cuando lsof muestre un proceso pero no estés seguro de si está escribiendo activamente o solo reteniendo un identificador obsoleto.

Cuando la Terminal es más trabajo de lo que vale

Estos comandos son poderosos, y una vez que los usas un par de veces, se vuelven algo natural. Pero hay un costo real en cambiar de contexto de tu trabajo a una ventana de Terminal — ejecutar comandos de diagnóstico, analizar salidas técnicas, decidir qué PID es seguro terminar.

Ejecta hace todo lo anterior de forma automática. Monitorea tus discos, identifica cada proceso que bloquea y te da un botón de un solo clic para cerrar cada uno. La misma información que obtendrías de sudo lsof, presentada de forma visual justo en tu barra de menús — sin comandos que memorizar, sin salidas que analizar.

Por $9.99 USD, obtienes una herramienta que reemplaza todo este flujo de trabajo de varios pasos en la Terminal con un solo clic. Si peleas con este problema más de una vez al mes, se paga sola en frustración ahorrada durante la primera semana. Prueba Ejecta gratis por 7 días — sin Terminal.

Si prefieres no usar la Terminal cada vez, Ejecta te muestra exactamente qué proceso está bloqueando tu disco — y te deja cerrarlo con un solo clic, directo desde tu barra de menús.

Comprar ahora — $9.99