Änderungen des Ordnerinhalts überwachen

18

Ich kann die inhaltlichen Änderungen einer Datei mit dem Befehl tail -f überwachen

Gibt es eine ähnliche Möglichkeit, die Änderungen einer Verzeichnisstruktur zu überwachen, wie tail -f Dateien überwacht?

Ich habe einen lang andauernden Prozess, bei dem einem bestimmten Pfad unter einem Verzeichnis eine Datei hinzugefügt wird, und ich möchte die eingehenden Dateien verfolgen, während sie in die Verzeichnisse und Unterverzeichnisse geschrieben werden.

johan.i.zahri
quelle

Antworten:

27

Das inotifyKernel-System ist das, was Sie brauchen.

  1. Installieren Sie inotify-tools:

    sudo apt-get install inotify-tools
    
  2. Eine Uhr aufstellen:

    inotifywait /path/to/directory --recursive --monitor
    
  3. Lehnen Sie sich zurück und beobachten Sie die Ausgabe.


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

Sie können die --eventOption verwenden, um nach bestimmten Ereignissen wie Erstellung, Änderung usw. zu suchen.

muru
quelle
1
falls jemand auf dieses Problem stößt: Konnte nicht sehen.; Obergrenze für inotify Uhren erreicht hier gehen blog.sorah.jp/2012/01/24/inotify-limitation
johan.i.zahri
1
Auf einem meiner Server habe ich festgestellt, dass es nicht mehr als inotify-waitgerecht bezeichnet wird inotifywait. Sie müssen den Namen geändert haben, um den Bindestrich zu entfernen.
Jamesking56
@ Jamesking56 Ich habe den Bindestrich herausgeschnitten.
Muru
Beachten Sie, dass die Hilfe für inotifywait die Optionen vor den Dateipfaden erwartet.
Felix Dombek
8

--eventsIst der Filter nicht, muss man benutzen --event. Hier ist zum Beispiel die Befehlszeile zum Überwachen von Erstellungs- / Änderungsereignissen:

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

Dann sehe ich:

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

Und hier ist das Format des Feeds:

[path] [event] [file]

z.B

./.mozilla/firefox/b4ar08t6.default/ MODIFY cookies.sqlite-wal
./.mozilla/firefox/b4ar08t6.default/ MODIFY cookies.sqlite-wal
./.mozilla/firefox/b4ar08t6.default/ MODIFY cookies.sqlite-wal
Selly
quelle