Monitorear continuamente archivos abiertos / accedidos por un proceso


25

lsof -p 12345 enumerará todos los archivos abiertos por proceso cuyo pid es 12345 pero solo por un instante de tiempo particular.

¿Cómo podemos monitorear continuamente un proceso desde el principio hasta el final (hasta que finalice el proceso) para enumerar / mostrar todos los archivos a los que accede el proceso durante toda su vida útil?


Respuestas:


31

Tratar con strace -p 12345; debe hacer lo que intentas lograr.

La salida se puede filtrar para mostrar solo los archivos abiertos ( comentario de Dan D. ):

strace -e open -p 12345

Nota: también puede rastrear procesos que se ejecutan rápidamente con strace -e open <command>.


La salida no es amigable y demasiadas cosas extra.
MA1

Puede arreglar eso canalizando - strace -p {pid} | grep -i "Open" | tee files_opened.log. La clave es grep, que le permite filtrar la salida para la llamada al sistema que desea (por ejemplo open()).

11
@Ninefingers En realidad stracepuede hacerlo mejor que grepcon la -eopción:strace -e open
Dan D.

@DanD oh yeah, ofc :)

Cuando elimino el comando strace, también mata lo que está rastreando. ¿Por qué está sucediendo esto (cygwin)?
CMCDragonkai


3

Esto repetirá nuevamente su comando y borrará la pantalla cada vez:

watch "lsof -p 12345"

ADVERTENCIA: esto perderá accesos rápidos a archivos y solo es adecuado para ver archivos de larga data


2
Esto es algo torpe en comparación con la otra respuesta que usa strace.
David Foerster

1
Esa es una solución inexacta: un proceso puede usar archivos entre ejecuciones delsof
Dor

@Dor puede configurar el tiempo de lsof en sub 1 segundo y aumentar su precisión. Si bien es torpe en comparación con otros, está equivocado porque es una solución inexacta.
Jordon Bedwell

Si está buscando una operación de archivo largo (como una copia de seguridad de la base de datos), esta puede ser una buena alternativa simple.
jcalfee314
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.