Monitorear la E/S de un programa

Monitorear la E/S de un programa

Tengo un programa que genera varios procesos secundarios.

Quiero saber qué archivos están creando, eliminando y modificando este programa y sus hijos.

  • inotifywaitPuede decirme a qué archivos se está accediendo, pero no puede decirme qué proceso lo está haciendo. Y tengo que saber dónde se crean los archivos para poder configurar el monitor.

  • auditctlme permitirá registrar qué procesos modifican un archivo, pero, nuevamente, tengo que saber dónde están los archivos para poder configurar el registro.

  • lsofMe dirá todos los archivos, pero no parece ser una buena solución para el seguimiento en tiempo real.

¿Hay algo que me permita monitorear la manipulación de archivos de un programa sin saber a priori qué archivos serán manipulados?

Respuesta1

En Linux puedes usar stracepara monitorear este tipo de eventos:

strace -f -p <PID> -e trace=file

En Solaris, puedes utilizar dtrace. Eche un vistazo a la herramienta DTraceToolkit opensnoop, que se instala de forma predeterminada en Solaris 11 en /usr/dtrace/DTT/Bin/opensnoop.

/usr/dtrace/DTT/Bin/opensnoop -p <pid>

Respuesta2

Para Linux: opensnoop de perf-tools de Brendengreg debería hacer el trabajo https://github.com/brendangregg/perf-tools

Para Solaris Dtrace, ¿hay de todos modos?

información relacionada