Monitora le modifiche al contenuto della cartella


18

Posso monitorare le modifiche al contenuto di un file usando il comando tail -f

Esiste un modo simile per monitorare le modifiche di una struttura di directory nel modo in cui tail -f monitora il file?

Ho un lungo processo che aggiunge il file a un determinato percorso in una directory e voglio tenere traccia dei file incoming mentre scrivono (o) nelle directory e nelle sottodirectory.

Risposte:


27

Il inotifysistema del kernel è quello che ti serve.

  1. Installa inotify-tools:

    sudo apt-get install inotify-tools
    
  2. Imposta un orologio:

    inotifywait /path/to/directory --recursive --monitor
    
  3. Siediti e guarda l'output.


Da 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.

Puoi usare l' --eventopzione per guardare eventi specifici, come creazione, modifica, ecc.


1
in caso qualcuno colpisse questo problema: Impossibile guardare.; limite massimo per orologi inotify raggiunto vai qui blog.sorah.jp/2012/01/24/inotify-limitation
johan.i.zahri

1
Su uno dei miei server ho scoperto che non è più chiamato inotify-waitsolo inotifywait. Devono aver cambiato il nome per rimuovere il trattino.
Jamesking56,

@ Jamesking56 Ho modificato il trattino.
muru,

Nota, l'aiuto per inotifywait dice che si aspetta le opzioni prima dei percorsi dei file.
Felix Dombek,

8

--eventsnon è il filtro, devi usare --event. Ad esempio, ecco la riga di comando per il monitoraggio degli eventi di creazione / modifica:

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

Poi vedo:

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

Ed ecco il formato del feed:

[path] [event] [file]

per esempio

./.mozilla/firefox/b4ar08t6.default/ MODIFY cookies.sqlite-wal
./.mozilla/firefox/b4ar08t6.default/ MODIFY cookies.sqlite-wal
./.mozilla/firefox/b4ar08t6.default/ MODIFY cookies.sqlite-wal
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.