Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

fswatch - утилита для мониторинга изменений файлов и директорий в Linux

Оригинал: fswatch – Monitors Files and Directory Changes or Modifications in Linux
Автор: Aaron Kili
Дата публикации: 7 октября 2016 года
Перевод: А. Кривошей
Дата перевода: сентябрь 2017 г.

fswatch - это кроссплатформенная утилита для мониторинга изменений файлов, которая отправляет уведомления при изменении содержимого заданных файлов или директории.

Она включает мониторы четырех типов для различных операционных систем:

Монитор, построенный на базе File System Events API из Apple OS X.
Монитор на базе kqueue, интерфейса уведомлений, представленного во FreeBSD 4.1, который также поддерживается множеством систем *BSD, включая OS X.
Монитор на базе File Events Notification API из ядра Solaris и его производных.
Монитор на базе inotify, подсистемы ядра, передающей сведения об изменениях файловой системы приложениям.
Монитор на базе ReadDirectoryChangesW, Windows API, который записывает that records alters to a directory.
Монитор, который регулярно проверяет статус файловой системы, хранит в памяти время внесения изменений и вручную определяет изменения файловой системы (который работает в любой системе).

Возможности fswatch

Поддержка нескольких, специфических для разных ОС, API.
Рекурсивный мониторинг директорий.
Выполнение фильтрации путей с использованием регулярных выражений.
Поддержка настраиваемого формата записей.
Поддержка периодических событий idle.

Установка fswatch в Linux

К сожалению пакет fswatch не включен по умолчанию в системные репозитории ни одного из дистрибутивов Linux. Единственный способ получить последнюю версию fswatch - собрать утилиту из исходного кода. Как это сделать, описано ниже.

Сначала скачайте архив с последней версией исходного кода fswatch с помощью команды wget и установите ее:

$ wget https://github.com/emcrisostomo/fswatch/releases/download/1.9.3/fswatch-1.9.3.tar.gz
$ tar -xvzf fswatch-1.9.3.tar.gz
$ cd fswatch-1.9.3
$ ./configure
$ make
$ sudo make install 

Важно: перед запуском компиляции убедитесь, что в вашей системе установлены GNU GCC (компиляторы C и C++) и инструменты разработки (build-essential в Debian/Ubuntu). Если нет, установите их с помощью следующих команд:

# yum group install 'Development Tools'		[В CentOS/RHEL]
# dnf group install 'Development Tools'		[В Fedora 22+]
$ sudo apt-get install build-essential          [В Debian/Ubuntu]

В дистрибутивах Debian/Ubuntu при выполнении команды fswatch вы можете получить следующее сообщение об ошибке:

Чтобы решить эту проблему, выполните приведенную ниже команду. Она обновит кэш ссылок на динамически связываемые библиотеки.

$ sudo ldconfig

Использование fswatch в Linux

Общий синтаксис команды fswatch следующий:

$ fswatch [option] [path]

В Linux рекомендуется использовать стандартный монитор inotify, список доступных мониторов можно просмотреть с помощью опции -M или - list-monitors:

$ fswatch -M
$ fswatch --list-monitors

список мониторов

Приведенная ниже команда позволяет вам видеть изменения в текущей директории (/home/tecmint), сообщения будут направляться на стандартный вывод каждые 4 секунды.
Опция -l или --latency позволяет задать латентность в секундах, по умолчанию она составляет 1 секунду.

$ fswatch -l 4 . 

работа с fswatch

Следующая команда мониторит изменения в файле /var/log/auth.log каждые 5 секунд:

$ fswatch -l 5 /var/log/auth.log

С помощью опции -t или --timestamp можно выводить время изменения для каждого события, с помощью опции -u или --utf-time можно задать вывод времени в формате UTC. Также форматировать время вывода можно с помощью опции -f или --format-time.

$ fswatch --timestamp /var/log/auth.log

Далее, опция x или --event-flagsм позволяет выводить флаги событий сбоку от пути. Вы также можете использовать опцию –event-field-seperator для вывода событий с использованием заданного разделителя.

$ fswatch --events-flags ~ /var/log/auth.log

Для вывода численного значения события, указывающего на изменение в вашей домашней директории и в файле /var/log/auth.log, используется опция -n или --numeric, как показано ниже.

$ fswatch --numeric ~ /var/log/auth.log 

Детальную информацию по опциям и использованию fswatch можно получить из man-страницы утилиты:

$ man fswatch

Также для этого можно посетить репозиторий fswatch на Github:

https://github.com/emcrisostomo/fswatch

Целостность ваших файлов вы можете контролировать также с помощью расширенной среды обнаружения вторжений AIDE.