El volumen no se puede expulsar porque actualmente está en uso

Después de trabajar con un disco de copia de seguridad USB externo, quiero desmontar limpiamente la unidad. Al pulsar el botón de 'expulsar' Finder me avisa con el mensaje:

  • " El volumen no se puede expulsar porque actualmente está en uso. "

o

  • " El disco "Diskname" no fue expulsado porque uno o más programas pueden estar usándolo. ".

o al intentar usar la Terminal:umount /Volumes/Diskname

  • " umount(/Volumes/Diskname): Recurso ocupado -- intente 'diskutil unmount' "

Que yo sepa, no estoy usando este disco, pero Finder dice que sí, así que debo estar equivocado. Prefiero un desmontaje limpio de la unidad. Como estoy en medio de varias tareas, no es preferible cerrar sesión e iniciar sesión, ya que es la instalación de software de terceros.

El comando lsofde terminal podría ser útil aquí, pero personalmente creo que esto es demasiado complejo para un problema tan 'simple' y, para ser honesto, no sé cómo usarlo correctamente.

Mi pregunta: ¿Cómo puedo saber qué programa está usando mi disco para poder salir correctamente de ese programa y expulsar mi disco?

El volumen no se puede expulsar porque actualmente está en uso. El disco "Camel" no fue expulsado porque uno o más programas pueden estar usándolo. El disco "Mammtoh" no fue expulsado porque uno o más programas... xkcd

"Hasta donde yo sé, no estoy usando este disco, pero Finder dice que sí, así que debo estar equivocado". Confías demasiado en las máquinas. ;-) A menudo, las computadoras están equivocadas y los humanos tenemos razón.
Entonces, ¿lo que estás diciendo es que tengo razón? ;)
Y si Spotlight es el culpable, ahórrese algunas repeticiones: apple.stackexchange.com/a/211616/15417
@ John2095 en mi comentario debajo de la respuesta a la que se vinculó, detallé el mensaje de error que recibí al intentarlo. Las unidades de Time Machine no se pueden indexar, incluso en Terminal
A veces solo tienes que tirar del cable. Creo que el formato Journaled de Mac OS evita que sufras la pérdida de datos si tiras del cable [cita requerida]

Respuestas (10)

lsofes de hecho su mejor apuesta. La forma más rápida y fácil sería esta: -

sudo lsof /Volumes/myDrive

Puede tardar un par de minutos en ejecutarse, pero una vez que se completa, le proporciona una lista de archivos abiertos en el disco. La salida se verá algo como esto:

COMMAND    PID  USER   FD   TYPE DEVICE SIZE/OFF  NODE NAME
mds         89  root   19r   DIR   52,3      432     2 /Volumes/Photos
mds         89  root   23r   DIR   52,3      432     2 /Volumes/Photos
Finder     681 alans   14r   DIR   52,3      432     2 /Volumes/Photos
QuickLook 2158 alans    9r   REG   52,3  1141591 78651 /Volumes/Photos/_tmp_iphone_10_backup/APC_1546.JPG  

En este caso, es la QuickLookaplicación que tiene un archivo abierto. Cerrar la aplicación directamente es la mejor manera de solucionar el problema. Sin embargo, eso no siempre es posible. Por ejemplo, QuickLook no aparece como una aplicación a la que puede acceder en el Dock.

Si no puede cerrar la aplicación manualmente, puede usar el killcomando para cerrarla desde la línea de comandos. Para hacer eso, use la PIDde la segunda columna como ID para matar. Del ejemplo anterior, sería:

kill 2158

Tenga en cuenta que a veces eso no funciona y killse debe usar una forma más agresiva de. Aquí hay una serie de agresividad creciente (usando el PID de ejemplo de 2158):

kill 2158
sudo kill 2158
sudo kill -INT 2158
sudo kill -KILL 2158

Debería poder expulsar el disco una vez que el proceso/aplicación haya finalizado.

Una nota final, lsofpuede tomar uno o dos minutos. También puede colgarse, pero debe darle al menos unos minutos antes de decidir que eso es lo que sucedió.

Además, a veces el comando base sudo lsof /Volumes/myDriveno encuentra nada. Si eso sucede, intente agregar el +Dargumento (es decir, sudo lsof +D /Volumes/myDrive). Eso hará un escaneo de arriba hacia abajo del disco. Tomará más tiempo, pero debería detectar cualquier cosa que esté causando que el disco no se pueda expulsar.

( Sombrero de punta a la publicación de Alec Jacobson para detalles adicionales ) .

También encontré esto, pero esperaba que alguien tuviera una solución no terminal. Si no, obtendrás tu plus one ;)
→ Paul: Te sugiero que mejores tu comando sugerido como:/usr/bin/sudo lsof /Volumes/myDrive
@danielAzuelos, ¿por qué debería uno necesitar derechos de superusuario para listar monturas?
@CousinCocaine, siga el enlace en mi comentario anterior. Podrás verlo por ti mismo.
Oh, excelente, hice lsof sin sudo, lo que da un conjunto de resultados totalmente diferente.
Sí, definitivamente se necesita sudo en muchos casos. En mi caso, esto reveló que se debió a que Spotlight intentó indexar el disco, por lo que la solución fue deshabilitar Spotlight para el disco y luego detener/reiniciar Spotlight manualmente.
sudo lsof /Volumes/drivees mucho más rápido quesudo lsof | grep /Volumes/drive
¿Qué haces si tu disco tiene espacios en su nombre? (auto-respuesta: poner su nombre entre comillas dobles)
Cuando usé lsof para descubrir por qué una unidad no podía desmontarse inmediatamente, necesitaba usar sudo. Sin él, no estaba recibiendo suficiente información. Al final, resultó que el software de copia de seguridad en la nube comenzó a hacer copias de seguridad de los archivos en el disco cuando no lo esperaba. Resolví el problema pausando la copia de seguridad. Entonces podría desmontar la unidad.
Cuando mato un proceso, envío estas señales en orden creciente de agresividad: TERM(predeterminado), HUP, QUIT, ABRT, INT, KILL(que está garantizado que funcionará). Vale la pena esperar varios segundos después de cada uno, ya que un proceso puede tardar un poco en cerrarse si está bloqueado en espera de IO.

¿Has probado $ diskutil unmount /Volumes/Diskname?

o $ diskutil unmount force /Volumes/Diskname?

Como señala la página de manual :

Debido a la naturaleza compleja y entretejida de Mac OS X, el desmontaje puede fallar con frecuencia. Se recomienda usar diskutil(1) (como en "diskutil unmount /mnt") en su lugar.

Si su volumen tiene espacios en el nombre, asegúrese de escapar de los espacios con \, por ejemplo:

$ diskutil unmount /Volumes/Disk\ Name

O use comillas para evitar confusiones.

$ diskutil unmount "/Volumes/Disk Name"
Creo que probé esto y no funcionó. Pero la próxima vez lo intentaré de nuevo y actualizaré mi publicación en consecuencia.
Su ejemplo tiene comillas, no apóstrofes. Lo que es algo bueno.
@NicolasBarbulesco: Gracias por señalarlo, hice correcciones a la respuesta. ¡Buena atrapada!
Funcionó -> sudo diskutil unmount force /Volumes/Diskname
@tgkprog Me alegra escucharlo, también gracias por el sudocomando, eso también puede ayudar a otros.
Esto proporcionó la identificación del proceso que tenía que kill.
No hace falta decirlo, pero este forzar un desmontaje debe evitarse, excepto como último recurso, y no debería ser necesario si usa el enfoque Sudo lsof como se sugiere en la otra respuesta.

Su problema probablemente se deba al proceso  mds : Spotlight indexando su disco.

Tengo este problema y no he encontrado una solución (todavía).

Así es como deshabilitar/rehabilitar la indexación de Spotlight: iclarified.com/49187/…
También encontré que el servicio mds lo usa. Traté de deshabilitar el servicio mds para la unidad flash usando "sudo mdutil -i off /Volumes/16GB", pero tampoco ayudó. Tuve que reiniciar el Finder usando "Opción + Clic" en FInder.

Puede probar la aplicación de donaciones " What's Keeping me? " que muestra qué proceso/aplicación está utilizando el volumen/carpeta/archivo.

Este programa está certificado por el desarrollador para Mac OS X 10.6 Snow Leopard, pero la página de RoaringApps para esta aplicación indica que funciona bien en OS X 10.7 Lion y OS X 10.8 Mountain Lion.

Acerca de ¿Qué me detiene?

¿Alguna vez ha tenido el problema de no poder vaciar la Papelera o expulsar un disco porque algo se lo impide? Por lo general, la razón es que alguna aplicación tiene un archivo abierto y, por lo tanto, no puede deshacerse del disco o eliminar el archivo. ¡Es por eso que hicimos What's Keeping Me! What's Keeping Me identificará la aplicación que mantiene abierto el elemento. Luego puede usar What's Keeping Me para salir de la aplicación problemática (o eliminarla si es necesario) para que pueda realizar su tarea. What's Keeping Me incluye un flujo de trabajo de Automator para que también pueda realizar búsquedas directamente desde el Finder.

Parece un software válido, pero realmente prefiero las soluciones nativas de OS X.
¿Por nativo te refieres a algo que ofrece Apple? No hay nada como eso en el frente de la GUI. Además, WKM existe desde hace varios años.
Gracias por tu adición. Nativo no es la palabra correcta, lo que quise decir fue 'no tercero'. WKM es una buena solución, pero personalmente prefiero lsof.
Acabo de probar la aplicación en High Sierra y todavía funciona. También es de 64 bits.
Los enlaces están muertos.

Intente reiniciar el Finder. aquí funciona

No estoy seguro de por qué esto fue rechazado; En mi caso, QuickLook y mds lo controlaron (a pesar de que no hay ventanas de búsqueda activas abiertas). Podría reiniciar mds, pero qlmanage -rdije que estaba "restableciendo quicklookd", pero aún mantenía el archivo abierto de acuerdo con lsof +D /path/to/volume. Un relanzamiento del buscador lo aclaró y pude expulsar el volumen.

Recibí este mensaje a pesar de estar seguro de que no hay archivos abiertos en el volumen . Verifiqué esto con Why Not Unmount , una herramienta GUI que puede indicar archivos abiertos en un disco.

En mi caso, fue una señal de que el sistema de archivos está corrupto. Ejecutar Disk Utility (o si eso no fuera suficiente, DiskWarrior) resolvió el problema e hizo que el disco fuera expulsable nuevamente.

En mi caso, el sistema no estaba corrupto.
Parece poco probable. Lo más probable es que Spotlight, o alguna otra aplicación o servicio, tenga un bloqueo en el disco.
El enlace está muerto ahora

NOTA: fseventerfunciona hasta OS X 10.10 Yosemite y la página del desarrollador http://www.fernlightning.com mientras tanto se desconectó. Por lo tanto, se eliminaron los enlaces de productos. Es brew cask install fseventerposible que aún esté disponible en versiones anteriores de macOS.

Existe una alternativa GUI a la aplicación CLI lsof:
fseventeres una gran utilidad de monitoreo de acceso al sistema de archivos para varios propósitos . Se ejecuta con permisos de superusuario ( sudo), por lo que ve todos los accesos de lectura/escritura de todos los sistemas de archivos montados y los presenta en una descripción general muy clara.

Mi experiencia: tenía un volumen que constantemente no se podía expulsar correctamente (como en las capturas de pantalla del OP), y siempre necesitaba una "expulsión forzada", a veces incluso una desconexión física forzada (¡no se recomienda! podría dañar su (s) sistema (s) de archivos en eso disco) o un apagado del sistema para eludir ese método bruto.

Mi solución: resumido: el problema de expulsión puede ser causado por contenido de archivo dañado o heredado en ese volumen. Eliminar el contenido problemático puede solucionarlo de forma permanente. En detalle:

  1. Determine a qué archivo se accede (con lsofo fseventer). En mi caso, era un archivo clásico de Mac OS con una bifurcación de recursos que permanecía abierta, probablemente porque algún proceso de análisis de disco en segundo plano (Spotlight, QuickLook o similar) estaba pendiente.

  2. Haga una copia de seguridad de los datos problemáticos en un archivo (que conserva los datos de recursos específicos de Mac (clásico)). Simplemente usé la función "Comprimir" nativa de Finder desde su menú contextual.

  3. Elimine el archivo/carpeta con problemas.

    • Con Finder como siempre. Es probable que esto falle, ya que es un "archivo/carpeta con problemas".
    • Con Finder y manteniendo presionada la tecla ALT mientras se vacía la Papelera. Esto crea un poco más de fuerza, pero es probable que aún falle.
    • A través de la Terminal con sudo rm -R /path/to/troublesome/FileOrFolder. Esto finalmente funcionó después de que los intentos de eliminación de Finder fallaran.
  4. Intente desmontar el volumen de nuevo. Todavía puede fallar, ya que los procesos en segundo plano, que fallaron, podrían estar aún en un estado irrecuperable .

  5. Reiniciar. A continuación, intente desmontar de nuevo. A partir de ese momento, el Volumen volvió a funcionar bien. Operaciones normales de montaje, desmontaje, lectura/escritura. Solo cuando un proceso de usuario abrió un archivo, se evitó el desmontaje. Comportamiento perfectamente normal de nuevo.

Tanto la solución de línea de comandos como What's Keeping Me funcionan muy bien.

Para recapitular, la línea de comando en la terminal es:

sudo lsof | grep /Volumes/myDrive

La aplicación GUI es What's Keeping Me, ~~disponible en Hamsoft Engineering]~~ Thomas Templeman 1 .

Capturas de pantalla de ambos con la misma búsqueda en marcha.

Salida de línea de comando GUI para What's Keeping Me

Prefiero la línea de comando solo un poco, ya que siempre está contigo. Por otro lado, What's Keeping Me es más rápido y fácil de usar si lo tienes instalado.

Solución Asegúrese de que todos los programas estén cerrados. Haga clic en el ícono de Apple en la parte superior izquierda de la pantalla, luego haga clic en Forzar salida. En la lista, haga clic en Finder. Ahora haga clic en el botón Relanzar. A continuación, intente expulsar la unidad de nuevo.

¿Has visto funcionar esta solución?
O una forma más sencilla... Use el sudo lsof…método descrito en la solución aceptada, encuentre la aplicación que está causando el problema y luego cierre esa aplicación específica.

Reinicié mi Mac y eso lo arregló :-)

Prefiero un desmontaje limpio de la unidad. Como estoy en medio de varias tareas, no es preferible cerrar sesión e iniciar sesión, ya que es la instalación de software de terceros.
Gracias por una gran respuesta de la línea de ayuda tecnológica y una risa. ¡Deberías trabajar para el soporte al cliente de Microsoft!