Monitorar continuamente os arquivos abertos / acessados ​​por um processo

25

lsof -p 12345 listará todos os arquivos abertos pelo processo cujo pid é 12345, mas apenas por um instante específico.

Como podemos monitorar continuamente um processo do início ao fim (até o término do processo) para listar / mostrar todos os arquivos acessados ​​pelo processo durante toda a sua vida útil?

MA1
fonte

Respostas:

31

Tente com strace -p 12345; deve fazer o que você está tentando alcançar.

A saída pode ser filtrada para exibir apenas os arquivos abertos ( comentário de Dan D. ):

strace -e open -p 12345

Nota: você também pode rastrear rapidamente os processos em execução com strace -e open <command>.

Jens Erat
fonte
saída não é amigável e muitas coisas extras.
MA1
Você pode corrigir isso canalizando - strace -p {pid} | grep -i "Open" | tee files_opened.log. A chave é grep, que permite filtrar a saída da chamada do sistema que você deseja (por exemplo open()).
11
@Ninefingers Na verdade stracepode fazer isso melhor do que grepcom a -eopção:strace -e open
Dan D.
@DanD oh sim, ofc :)
Quando eu mato o comando strace, ele também mata o que está rastreando. Por que isso está acontecendo (cygwin)?
CMCDragonkai
6

O novo utilitário fatrace fará isso: https://launchpad.net/fatrace/

sudo fatrace | grep '(6514)'

Não use a opção -p, isso significa o oposto do que significa no lsof ou em outros utilitários.

Bryce
fonte
3

Isso repetirá o comando e limpará a tela toda vez:

watch "lsof -p 12345"

AVISO: isso perderá acesso rápido a arquivos e é adequado apenas para ver arquivos antigos

jcalfee314
fonte
2
Isso é um pouco desajeitado em comparação com a outra resposta usada strace.
David Foerster
1
Essa é uma solução imprecisa - um processo pode usar arquivos entre as execuções delsof
Dor
@Dor, você pode definir o tempo de lsof como sub 1 segundo e aumentar sua precisão. Embora seja desajeitado em comparação com os outros, você está errado, pois é uma solução imprecisa.
22414 Jordon Bedwell
Se você estiver procurando uma operação de arquivo longo (como um backup de banco de dados), essa pode ser uma boa alternativa simples.
jcalfee314