Отслеживать изменения содержимого папки

Я могу отслеживать изменения содержимого файла с помощью команды tail -f

Существует ли аналогичный способ отслеживания изменений в структуре каталогов, как tail -f отслеживает файл?

У меня есть длительный процесс, который добавляет файл к определенному пути в каталоге, и я хочу отслеживать поступления файлов, когда он (или они) записывают (ы) в каталоги и подкаталоги.

2 ответа

Решение

inotify Система ядра - это то, что вам нужно.

  1. устанавливать inotify-tools:

    sudo apt-get install inotify-tools
    
  2. Настройте часы:

    inotifywait /path/to/directory --recursive --monitor
    
  3. Сядьте и посмотрите выходной.


От 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.

Вы можете использовать --event возможность следить за конкретными событиями, такими как создание, модификация и т. д.

--events это не фильтр, вы должны использовать --event, Например, вот командная строка для мониторинга событий создания / изменения:

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

Тогда я вижу:

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

А вот формат ленты:

[path] [event] [file]

например

./.mozilla/firefox/b4ar08t6.default/ MODIFY cookies.sqlite-wal
./.mozilla/firefox/b4ar08t6.default/ MODIFY cookies.sqlite-wal
./.mozilla/firefox/b4ar08t6.default/ MODIFY cookies.sqlite-wal
Другие вопросы по тегам