Monitorar alterações no conteúdo da pasta

15

Eu posso monitorar as alterações de conteúdo de um arquivo usando o comando tail -f

Existe uma maneira similar de monitorar as mudanças de uma estrutura de diretórios da mesma forma que o tail -f monitora o arquivo?

Eu tenho um longo processo em execução que adiciona o arquivo a um determinado caminho em um diretório e eu quero rastrear o arquivo de entrada como ele (ou eles) escreve (s) para os diretórios e subdiretórios.

    
por johan.i.zahri 24.10.2014 / 19:55

2 respostas

19

O sistema de kernel inotify é o que você precisa.

  1. Instale inotify-tools :

    sudo apt-get install inotify-tools
    
  2. Configurar um relógio:

    inotifywait /path/to/directory --recursive --monitor
    
  3. Sente-se e observe a saída.

Em man inotifywait :

-m, --monitor
   Instead of exiting  after  receiving  a  single  event,  execute
   indefinitely.   The default behaviour is to exit after the first
   event occurs.
-r, --recursive
   Watch all subdirectories of any directories passed as arguments.
   Watches will be set up recursively to an unlimited depth.   Sym‐
   bolic  links  are  not  traversed.  Newly created subdirectories
   will also be watched.

Você pode usar a opção --event para assistir a eventos específicos, como criação, modificação, etc.

    
por muru 24.10.2014 / 20:48
5

--events não é o filtro, você precisa usar --event . Por exemplo, aqui está a linha de comando para monitorar eventos de criação / modificação:

# inotifywait . --recursive --monitor --event CREATE --event MODIFY

Então eu vejo:

Setting up watches.  Beware: since -r was given, this may take a while!

E aqui está o formato do feed:

[path] [event] [file]

por exemplo,

./.mozilla/firefox/b4ar08t6.default/ MODIFY cookies.sqlite-wal
./.mozilla/firefox/b4ar08t6.default/ MODIFY cookies.sqlite-wal
./.mozilla/firefox/b4ar08t6.default/ MODIFY cookies.sqlite-wal
    
por Selly 29.07.2016 / 00:10