Monitore a E/S de um programa

Monitore a E/S de um programa

Eu tenho um programa que gera vários processos filhos.

Quero saber quais arquivos este programa e seus filhos estão criando, excluindo e modificando.

  • inotifywaitpode me dizer quais arquivos estão sendo acessados, mas não pode me dizer qual processo está fazendo isso. E preciso saber onde os arquivos estão sendo criados para configurar o monitor.

  • auditctlme permitirá registrar quais processos modificam um arquivo, mas, novamente, preciso saber onde os arquivos estão para configurar o registro.

  • lsofme contará todos os arquivos, mas não parece ser uma boa solução para rastreamento em tempo real.

Existe algo que me permita monitorar a manipulação de arquivos de um programa sem saber a priori quais arquivos serão manipulados?

Responder1

No Linux você pode usar stracepara monitorar este tipo de eventos:

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

No Solaris, você pode usar dtrace. Dê uma olhada na ferramenta DTraceToolkit opensnoop, que é instalada por padrão no Solaris 11 em /usr/dtrace/DTT/Bin/opensnoop.

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

Responder2

Para Linux: o opensnoop das perf-tools do Brendengreg deve fazer o trabalho https://github.com/brendangregg/perf-tools

Para Solaris Dtrace existe de qualquer maneira

informação relacionada