A veces, me gustaría desmontar un dispositivo USB con umount /run/media/theDrive, pero recibo un drive is busyerror.
¿Cómo averiguo qué procesos o programas están accediendo al dispositivo?
process
open-files
unmounting
Stefan
fuente
fuente

Respuestas:
Úselo
lsof | grep /media/whateverpara averiguar qué está usando el soporte.Además, considere
umount -l(uzyunt) para evitar que nuevos procesos usen la unidad mientras realiza la limpieza.fuente
fuser -mv /path/to/mountpointpodría ser una alternativa más legible para descubrir procesos utilizando un punto de moint.lsof | grepfunciona mejor para mí.fuser -mvparece volcar más de 80 procesos no relacionados. Estoy usando los directorios de Mount Binded.umount -les peligroso .mount -o bindun000directorio vacío de modo en la parte superior y limpiar a través delsof +f -- /dev/device.La mayoría de las veces, el mejor comando a utilizar es lsof ( “ l i s t o pluma f iles”).
¿Dónde
/media/usb0está el punto de montaje de la unidad USB u otro sistema de archivos para desmontar?+f --le dice a lsof que trate el argumento posterior como un punto de montaje; por lo general, pero no siempre, se maneja solo, por lo quelsof /media/usb0también funciona. Esto encuentra archivos abiertos (incluso los que no están vinculados), archivos mapeados en memoria, directorios actuales y algunos usos más oscuros. Deberá ejecutar el comando como root para obtener información sobre los procesos de otros usuarios (y creo que hay unices dondelsofdebe ejecutarse como root).Hay usos que lsof no encontrará; Estos son poco comunes en los medios extraíbles. Incluyen:
/foosi/foo/bares un punto de montaje./foosi/foo/bares un dispositivo de bloque montado o un archivo regular montado en bucle, o si es la fuente de un montaje de enlace de Linux.Otro comando que puede servir en caso de necesidad es el fusor, que solo enumera los PID de los procesos con archivos abiertos en el dispositivo:
fuente
Puedes usarlo
lsofcomo dijo Peter, o si estás seguro de que solo quieres matar todas esas cosas y desmontarlo, probablemente puedas hacer algo como:fuente
-Mpor seguridad.-Mdebe aplicar.fuser:-M, --ismountpoint Request will be fulfilled only if NAME specifies a mountpoint. This is an invaluable seatbelt which prevents you from killing the machine if NAME happens to not be a filesystem.Abrir archivos
Los procesos con archivos abiertos son los culpables habituales. Mostrarlos:
Hay una ventaja en el uso en
/dev/<device>lugar de/mountpoint: un punto de montaje desaparecerá después de unumount -l, o puede estar oculto por un montaje superpuesto.fuserTambién se puede utilizar, pero en mi opiniónlsoftiene una salida más útil. Sin embargo,fuseres útil cuando se trata de matar los procesos que causan tus dramas para que puedas seguir con tu vida.Listar archivos en
<mountpoint>(ver advertencia arriba):Elimine interactivamente solo procesos con archivos abiertos para escritura:
Después de volver a montar solo lectura (
mount -o remount,ro <mountpoint>), es seguro (r) eliminar todos los procesos restantes:Puntos de montaje
El culpable puede ser el núcleo mismo. Otro sistema de archivos montado en el sistema de archivos que está intentando
umountcausarle dolor. Verifícalo con:Para montajes de bucle invertido ( gracias Stephen Kitt ), también verifique la salida de:
Inodos anónimos (Linux)
Los inodos anónimos pueden ser creados por:
openconO_TMPFILE)Estos son el tipo de pokemon más difícil de alcanzar, y aparecen en
lsoflaTYPEcolumna comoa_inode(que no está documentada en lalsofpágina del manual ).No aparecerán
lsof +f -- /dev/<device>, por lo que deberá:Para ver los procesos de eliminación de inodos anónimos, consulte: Lista de relojes inotify actuales (nombre de ruta, PID) .
inotifyrelojes (Linux)Este comentario explica por qué
inotifyno debe impedir que un desmontaje, pero esta nota se describen las situaciones en las que voluntad :fuente
lsof.Mountpointssección.Si usa GNOME, el desmontaje a través de Nautilus mostrará un mensaje que indica qué proceso todavía está usando la unidad y el archivo que está usando.
fuente
Para (al menos) OpenBSD:
Por ejemplo (usar
doaspara ejecutarfstatcomo root ya que de lo contrario solo veríamos nuestros propios procesos):En este caso, no podría desmontar
/usr/portshasta que el usuario_pbuildhaya terminado de ejecutar esos dosmakeprocesos.fuente
Este es un escollo común: debe recurrir a un usuario diferente (ya sea root o cualquier otro usuario), cambiar al directorio de un dispositivo montado y luego cerrar sesión como ese usuario. Cuando olvides que te fuiste en ese directorio, puedes intentar encontrarlo hasta que estés ciego.
lsofmuestra al shell qué directorio actual está usando ese dispositivo. Es posible que desee su como ese usuario nuevamente para cambiar su directorio.fuente