Ferramenta para monitorar a leitura / gravação de arquivos no unix

1

Existe alguma ferramenta / comando disponível no unix para monitorar leitura / escrita em um determinado arquivo.

Eu também quero coletar quantos dados estão sendo lidos cada vez que o arquivo é acessado.

    
por Der Hochstapler 11.02.2011 / 11:56

4 respostas

0

Resposta curta, nenhuma que eu saiba.

vmstat (execute vmstat 1 para ter uma idéia imediata do que ele faz; ^C para sair) pode mostrar o uso de IO sistema completo ( BI e BO colunas, blocos e blocos, provavelmente são mais imediatamente úteis). Eu acho isso muito útil em sistemas quase silenciosos.

strace (execute strace -o /tmp/ls ls /tmp ; em seguida, examine o arquivo /tmp/ls para ver quais dados ele fornece) permite que você siga o caminho de execução de seu programa por todas as chamadas write () e adicione o solicitado tamanhos para qualquer descritor de arquivo que você está interessado. No lado positivo, ele poderia ser script e seria especificamente para esse programa para esse arquivo. No lado negativo, isso diminuiria a execução do seu programa (talvez ele rodasse muito lentamente), e perderia completamente todo o IO do disco que usa regiões de memória mmap(2) .

Você poderia escrever uma biblioteca que você carregaria com a variável de ambiente LD_PRELOAD para substituir read(2) e write(2) por wrappers que executassem sua contabilidade e acabasse chamando as chamadas do sistema (isso certamente não vale o incômodo) . Também falhará ao ver o disco IO que usa mmap(2) . Você teria que ter uma boa razão para seguir esse caminho.

Você pode escrever um back-end FUSE para fazer sua contabilidade. Seria lento e diminuiria todos os processos usando esse sistema de arquivos. O código FUSE também expõe muitas partes internas do kernel que esperam resultados rápidos para atrasos arbitrariamente longos (e glacialmente longos, por padrões de kernel) devido a programas de espaço do usuário. Programas podem causar pressão de memória, troca e mais tráfego de disco. O FUSE é melhor implantado em ambientes com memória abundante, requisitos não reais e baixo custo de falha.

    
por 11.02.2011 / 12:24
0

Há fam, link , mas não tenho certeza se está disponível para o seu sistema operacional link

Também o google inotify.

    
por 11.02.2011 / 12:32
0

No linux, houve várias APIs para monitorar a atividade do sistema de arquivos anteriormente (dnotify e inotify), mas a mais recente é chamada de fanotify . O LWN discute a API aqui .

Para monitorar sistemas de arquivos inteiros existe iostat , o que você pede parece ser um pouco como iostat, mas apenas para um dado arquivo. Eu não estou ciente de tal combinação, mas usando a API você pode escrever o seu próprio.

    
por 11.02.2011 / 13:07
0

No Linux, você pode usar incron . No Solaris / BSD, você provavelmente poderá obter as informações usando o DTrace .

    
por 04.05.2011 / 11:53