monitorando alterações no arquivo + acesso ao processo para arquivos

15

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

Existe uma ferramenta no Linux para ajudar nisso?

    
por Martin V. 23.09.2013 / 15:20

5 respostas

8

Dependendo das suas necessidades exatas, talvez você queira investigar inotify e / ou FAM / soluções do GAMIN .

    
por 23.09.2013 / 16:20
12

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

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

Dependendo do que exatamente você está procurando, inotify-tools é provavelmente outra ferramenta de comércio aqui.

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

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

    
por 23.09.2013 / 16:16
7

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

 lsof -n -p 'pidof your_app'

E vice-versa, você pode obter pid de processo que escreve / lê em algum arquivo:

 lsof -n -t file
    
por 24.09.2013 / 01:41
5

Você pode usar strace para monitorar todas as chamadas do sistema de um processo, o 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 por meio do PID:

$ ps aux | grep myserver
me      1859  0.0  0.0  25288   424 ?        Ss   Sep02   0:00 myserver
$ strace -p 1859
    
por 23.09.2013 / 15:24
0

watch find dir/ -mmin 1 não funcionou para mim, o que 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 diff time.

    
por 01.09.2017 / 12:36