Monitoruj zmiany zawartości folderów

18

Mogę monitorować zmiany zawartości pliku za pomocą polecenia tail -f

Czy istnieje podobny sposób monitorowania zmian w strukturze katalogów w sposób, w jaki tail -f monitoruje plik?

Mam długotrwały proces, który dodaje plik do określonej ścieżki w katalogu i chcę śledzić przychody z plików, gdy zapisują one w katalogach i podkatalogach.

johan.i.zahri
źródło

Odpowiedzi:

27

System inotifyjądra jest tym, czego potrzebujesz.

  1. Zainstaluj inotify-tools:

    sudo apt-get install inotify-tools
    
  2. Skonfiguruj zegarek:

    inotifywait /path/to/directory --recursive --monitor
    
  3. Usiądź wygodnie i obserwuj wyniki.


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

Możesz użyć tej --eventopcji, aby obserwować określone zdarzenia, takie jak tworzenie, modyfikacja itp.

muru
źródło
1
jeśli ktoś trafi w ten problem: Nie można oglądać.; osiągnięty górny limit zegarów inotify, przejdź tutaj blog.sorah.jp/2012/01/24/inotify-limitation
johan.i.zahri
1
Na jednym z moich serwerów odkryłem, że nie jest już nazywany inotify-waitsprawiedliwym inotifywait. Musieli zmienić nazwę, aby usunąć łącznik.
Jamesking56
@ Jamesking56 Zredagowałem łącznik.
muru
Uwaga: pomoc dla inotifywait mówi, że oczekuje opcji przed ścieżkami plików.
Felix Dombek,
8

--eventsnie jest filtrem, musisz użyć --event. Na przykład oto wiersz polecenia do monitorowania tworzenia / modyfikowania zdarzeń:

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

Potem widzę:

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

A oto format kanału:

[path] [event] [file]

na przykład

./.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
źródło