Monitorar a E / S de um programa

4

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

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

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

  • auditctl permitirá que eu registre quais processos modificam um arquivo, mas, novamente, preciso saber onde estão os arquivos para configurar o registro.

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

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

    
por Richard 02.11.2015 / 21:05

2 respostas

6

No Linux, você pode usar strace para monitorar esse tipo de evento:

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

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

/usr/dtrace/DTT/Bin/opensnoop -p <pid>
    
por 02.11.2015 / 21:23
5

Para Linux: o opensnoop das ferramentas perf da Brendengreg deve fazer o trabalho link

Para o Solaris Dtrace existe de qualquer forma

    
por 02.11.2015 / 21:23

Tags