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:
o
o al intentar usar la Terminal:umount /Volumes/Diskname
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 lsof
de 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?
lsof
es 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 QuickLook
aplicació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 kill
comando para cerrarla desde la línea de comandos. Para hacer eso, use la PID
de la segunda columna como ID para matar. Del ejemplo anterior, sería:
kill 2158
Tenga en cuenta que a veces eso no funciona y kill
se 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, lsof
puede 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/myDrive
no encuentra nada. Si eso sucede, intente agregar el +D
argumento (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 ) .
/usr/bin/sudo lsof /Volumes/myDrive
sudo lsof /Volumes/drive
es mucho más rápido quesudo lsof | grep /Volumes/drive
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.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"
sudo
comando, eso también puede ayudar a otros.kill
.Su problema probablemente se deba al proceso mds
: Spotlight indexando su disco.
Tengo este problema y no he encontrado una solución (todavía).
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.
Intente reiniciar el Finder. aquí funciona
qlmanage -r
dije 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.
NOTA: fseventer
funciona 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 fseventer
posible que aún esté disponible en versiones anteriores de macOS.
Existe una alternativa GUI a la aplicación CLI lsof
:
fseventer
es 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:
Determine a qué archivo se accede (con lsof
o 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.
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.
Elimine el archivo/carpeta con problemas.
sudo rm -R /path/to/troublesome/FileOrFolder
. Esto finalmente funcionó después de que los intentos de eliminación de Finder fallaran.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 .
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.
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.
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ó :-)
Nicolás Barbulesco
PrimoCocaína
Nicolás Barbulesco
Juan2095
Micro máquina
Micro máquina