Tengo un programa que genera varios procesos secundarios.
Quiero saber qué archivos están creando, eliminando y modificando este programa y sus hijos.
inotifywait
Puede 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.auditctl
me permitirá registrar qué procesos modifican un archivo, pero, nuevamente, tengo que saber dónde están los archivos para poder configurar el registro.lsof
Me 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 strace
para 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?