monitorando alterações de arquivos + processo de acesso a arquivos

19

Gostaria de ver o que está acontecendo nas minhas pastas do servidor de aplicativos, ou seja, quais arquivos foram alterados pelo processo x ou quais *.warforam alterados (substituídos / criados) nos últimos x minutos.

Existe uma ferramenta no Linux para ajudar com isso?

Martin V.
fonte
Olá tentar dar uma olhada neste guia para configurar auditd para monitorar diretórios e arquivos xmodulo.com/how-to-monitor-file-access-on-linux.html
Sifungurux
11
Eu tenho a esta questão através de pesquisa do Google, mas eu encontrei a minha resposta aqui: unix.stackexchange.com/questions/18844/...
Quentin Skousen
Dê uma olhada no SystemTap. uselessuseofcat.com/?p=281
steve

Respostas:

9

Dependendo de suas necessidades exatas, convém procurar soluções inotify e / ou FAM / GAMIN .

peterph
fonte
14

Strace (conforme descrito acima) é uma maneira de verificar as ações de um software em execução especificado.

Alguns comandos como watch find dir/ -mmin 1também podem ajudar a verificar as alterações do último minuto em algum diretório.

Dependendo do que exatamente você está procurando, o inotify-tools é provavelmente outra ferramenta comercial aqui.

Por exemplo, inotifywait -mr dir/monitora as alterações no diretório especificado e fornece instantaneamente feedback de qualquer aplicativo que tente abrir / ler / gravar / fechar um arquivo. No entanto, o inotify não fornece feedback sobre qual aplicativo ou processo está acessando o arquivo - isso é algo que o strace faz.

Por favor, saiba que o monitoramento no nível do sistema geralmente é de uso limitado para software java em execução em algum ambiente de contêiner de aplicativo, pois você só vê o contêiner (por exemplo, Tomcat), mas não o aplicativo real (por exemplo, war) interagindo com o sistema.

knoepfchendruecker
fonte
8

Você pode obter informações sobre quais arquivos acessados ​​pelo processo por lsof :

 lsof -n -p `pidof your_app`

E vice-versa, você pode se familiarizar com o processo que escreve / lê em algum arquivo:

 lsof -n -t file
trankvilezator
fonte
6

Você pode usar stracepara monitorar todas as chamadas de sistema de um processo, que inclui todo o acesso a arquivos.

Ao iniciar um programa:

$ strace ./myserver

você também pode anexar strace a um processo em execução via seu PID:

$ ps aux | grep myserver
me      1859  0.0  0.0  25288   424 ?        Ss   Sep02   0:00 myserver
$ strace -p 1859
umläute
fonte
seria ótimo monitorar também por pasta e não por PID, obrigado. btw strace -p PID funciona para mim no Ubuntu.
Martin V.
0

watch find dir/ -mmin 1 não funcionou para mim, o que fez foi simplesmente copiar e diferenciar:

cp -r dir /tmp/olddir
# initialize/whatever
diff -r dir /tmp/olddir

É bastante intensivo em recursos, mas mostra todas as alterações entre o instantâneo e o difftempo.

serv-inc
fonte