Cuando lo hago
sudo umount /media/KINGSTON
tengo
umount: /media/KINGSTON: device is busy.
Cierro todas las ventanas y me aseguro de que todos los shell estén apuntando a otros directorios. ¿Cómo puedo encontrar qué proceso impide el desmontaje?
Respuestas:
abrir una terminal:
Producirá algo como esto:
Esto le dará el pid de los procesos que utilizan este volumen. El carácter extra al final de pid dará información adicional. (c en 3106c)
c - el proceso está usando el archivo como su directorio de trabajo actual
m - el archivo está mapeado con mmap
o - el proceso lo está usando como un archivo abierto
r - el archivo es el directorio raíz del proceso
t - el proceso está accediendo a archivo como archivo de texto
y: este archivo es el terminal de control para el proceso
Entonces, para desmontar, simplemente mata esos pids y vuelve a intentarlo
Nota: Para encontrar el nombre exacto de la aplicación de estos pids, puede usar este comando
Por ejemplo :
cat /proc/11086/cmdline
esto generará algo como a continuación.
Espero que esto ayude
fuente
ps <pid>
lugar de editar archivos en / proc para ver el nombre del comando y los argumentos.La herramienta más útil es lsof . Muestra qué archivos están siendo utilizados por qué procesos. Si
/media/KINGSTON
es un punto de montaje (el nombre del dispositivo también funcionaría), el siguiente comando muestra todos los archivos que están en uso en este punto de montaje:Si ejecuta este comando como un usuario normal, solo mostrará sus propios procesos¹. Ejecute
sudo lsof /media/KINGSTON
para ver todos los procesos de los usuarios.El resultado de se
lsof
ve así:La
COMMAND
columna muestra el nombre del ejecutable del programa y laPID
columna muestra el ID del proceso. LaNAME
columna muestra el nombre del archivo; es posible que vea(deleted)
si el archivo se eliminó mientras estaba abierto (cuando se elimina un archivo, ya no tiene un nombre, pero aún existe hasta que el último proceso que lo usa cierra el archivo).USER
debe explicarse por sí mismo. Las otras columnas no importan aquí, excepto quizásFD
, que muestra cómo el proceso usa el archivo:cwd
: directorio de trabajo actualtxt
: el programa ejecutable²mem
: un archivo mapeado en memoria (aquí, piense en él como un archivo abierto)r
leer yw
escribirNo hay una forma mecánica de ubicar la ventana donde está abierto un archivo (de hecho, esto no es técnicamente significativo: si un proceso tiene varias ventanas, un archivo no está particularmente asociado con una ventana u otra), ni siquiera con una forma simple de identificar la ventana de un proceso (y, por supuesto, un proceso no tiene que tener ninguna ventana). Pero, por lo general, el nombre del comando y el nombre del archivo son suficientes para localizar al infractor y cerrar el archivo correctamente.
Si no puede cerrar el archivo y solo desea finalizarlo todo, puede eliminar el proceso con
kill 31421
(dónde31421
está la ID del proceso) okill -HUP 31421
("colgar"). Si matar normal no hace el truco, matar con extremo prejuicio:kill -KILL 31421
.Hay una GUI para lsof, glsof , pero aún no está lista para el horario de máxima audiencia, y hasta ahora no está empaquetada para Ubuntu.
¹ Lsof puede enumerar cierta información sobre los procesos de otros usuarios, pero no detecta el punto de montaje, por lo que no los enumerará si especifica un punto de montaje.
² El código ejecutable a menudo se denomina texto en las discusiones sobre formatos ejecutables.
fuente
También esto puede ayudar:
fuente
grep "media/KINGSTON"
Mientras tanto, el comando del fusor ha mejorado mucho. Puede hacer el trabajo completo con un solo comando:
Dónde:
k
mata el proceso ofensivo,v
muestra de antemano el proceso y su usuarioi
te pide confirmación.Si algún proceso resiste, intente nuevamente con
fuser -ickv -9
(o más generalmente con-SIGNAL
) que mata a los más obstinados.¡Pero siempre encontrarás un proceso "inmortal" ...!
En estos casos, últimamente aprendí a usar
como último recurso, hasta ahora me funcionó siempre.
fuente
vboxmanage
. -_-