
Digamos, eu tenho um programa e quero monitorar a atividade do sistema de arquivos (quais arquivos/diretórios são criados/modificados/excluídos etc.). Este programa pode ser capaz de gerar processos adicionais e, portanto, gostaria de obter a atividade de esses processos gerados também.
Como devo fazer isso?
Responder1
Você pode usarstrace
por esta:
strace -f -e trace=file command args...
strace
rastreia as chamadas do sistema e imprime uma descrição delas para o erro padrão à medida que ocorrem. A -f
opção também informa para rastrear processos e threads filhos. -e
permite modificar as chamadas que ele rastreará: -e trace=file
registrará todos os usos de open
, unlink
, etc, mas nenhuma ação que não seja de arquivo.
Se você quiser ver o que foi lido e gravado nos arquivos, altere para -e trace=file,read,write
; você também pode listar quaisquer chamadas adicionais que deseja examinar. Se você deixar de lado esse argumento, receberá todas as chamadas do sistema.
A saída é assim (executei 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 (ainda) mais detalhada com -v. Também é possível anexar a um processo já existente -p PID
, caso seja mais útil.
Se você deseja fazer isso programaticamente, em vez de inspecionar a si mesmo, consulte optrace
chamar, que é o que strace
é construído.