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:
lsof /media/KINGSTON
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í:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
zsh4 31421 gilles cwd DIR 8,1 4096 130498 /var/tmp
zsh4 31421 gilles txt REG 8,1 550804 821292 /bin/zsh4
zsh4 31421 gilles mem REG 8,1 55176 821326 /usr/lib/zsh/4.3.10/zsh/complist.so
zsh4 31421 gilles 12r REG 8,1 175224 822276 /usr/share/zsh/functions/Completion.zwc
La COMMAND
columna muestra el nombre del ejecutable del programa y la PID
columna muestra el ID del proceso. La NAME
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ás FD
, que muestra cómo el proceso usa el archivo:
cwd
: directorio de trabajo actual
txt
: el programa ejecutable²
mem
: un archivo mapeado en memoria (aquí, piense en él como un archivo abierto)
- un número: un archivo abierto real; una letra posterior indica el modo de apertura, como
r
leer y w
escribir
No 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ónde 31421
está la ID del proceso) o kill -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.