Monitorando a atividade do sistema de arquivos

6

Digamos, eu tenho um programa, e eu quero monitorar sua atividade do sistema de arquivos (quais arquivos / diretórios são criados / modificados / deletados, etc.) Este programa pode ser capaz de gerar processos adicionais e, portanto, eu gostaria de obter a atividade desses processos gerados também.

Como devo fazer isso?

    
por user2064000 24.06.2014 / 15:26

1 resposta

7

Você pode usar strace para isso:

strace -f -e trace=file command args...

strace rastreia as chamadas do sistema e imprime uma descrição delas para o erro padrão conforme elas ocorrem. A opção -f diz para rastrear processos e encadeamentos filhos também. -e permite modificar as chamadas que serão rastreadas: -e trace=file registrará todo uso de open , unlink , etc, mas nenhuma ação sem arquivo.

Se você quiser ver o que foi lido e gravado em arquivos, altere-o para -e trace=file,read,write ; Você pode listar todas as chamadas adicionais que você deseja examinar lá também. Se você deixar de lado esse argumento, você recebe todas as chamadas do sistema.

A saída é assim (eu corri mkdir /tmp/test em um shell rastreado):

[pid  1444] execve("/usr/bin/mkdir", ["mkdir", "/tmp/test4"], [/* 33 vars */]) = 0
[pid  1444] access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
[pid  1444] open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
[pid  1444] open("/usr/lib/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
[pid  1444] open("/usr/lib/locale/locale-archive", O_RDONLY|O_CLOEXEC) = 3
[pid  1444] mkdir("/tmp/test", 0777)    = 0
[pid  1444] +++ exited with 0 +++
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=1444, si_status=0, si_utime=0, si_stime=0} ---

Você pode registrar em um arquivo em vez do terminal com -o filename e tornar a saída (mesmo) mais detalhada com -v. Também é possível anexar a um processo já existente com -p PID , caso isso seja mais útil.

Se você quiser fazer isso de maneira programática, em vez de inspecionar a si mesmo, consulte a ptrace call , que é o que strace é construído.

    
por 25.06.2014 / 00:39