fswatch – это кроссплатформенный монитор изменений файлов, который получает уведомления о том, что содержимое указанных файлов или каталогов изменено или модифицировано.
Он выполняет четыре типа мониторов на различных операционных системах, таких как:
- Монитор, построенный на API событий файловой системы Apple OS X.
- Монитор, основанный на kqueue, интерфейсе уведомлений, присутствующем во FreeBSD 4.1 и поддерживаемом во многих системах *BSD, включая OS X.
- Монитор на основе File Events Notification API ядра Solaris и его побочных продуктов.
- Монитор, основанный на inotify, подсистеме ядра, которая показывает изменения файловой системы приложениям.
- Монитор, основанный на ReadDirectoryChangesW, API Windows, который записывает изменения в каталоге.
- Монитор, который регулярно проверяет состояние файловой системы, хранит в памяти время модификации файлов и вручную определяет изменения файловой системы (работает везде, где можно использовать stat).
Особенности fswatch
- Поддержка нескольких API, специфичных для ОС.
- Позволяет осуществлять рекурсивный мониторинг каталогов
- Выполняет фильтрацию путей с помощью включающих и исключающих регулярных выражений
- Поддерживает настраиваемый формат записей
- Дополнительно поддерживает периодические события простоя
Как установить fswatch в Linux-системах
Чтобы установить fswatch в Linux, используйте следующую команду, соответствующую вашему дистрибутиву Linux.
sudo apt install fswatch [On Debian, Ubuntu and Mint] sudo yum install fswatch [On RHEL/CentOS/Fedora and Rocky/AlmaLinux] sudo emerge -a sys-apps/fswatch [On Gentoo Linux] sudo apk add fswatch [On Alpine Linux] sudo pacman -S fswatch [On Arch Linux] sudo zypper install fswatch [On OpenSUSE] sudo pkg install fswatch [On FreeBSD]
Если fswatch недоступен для установки из системных репозиториев по умолчанию, вы можете собрать его из исходных текстов, как показано в следующих инструкциях по установке.
Сначала клонируйте последний git-репозиторий fswatch с помощью следующей команды git и установите его, как показано на рисунке:
git clone https://github.com/emcrisostomo/fswatch.git cd fswatch ./autogen.sh ./configure make sudo make install
Важно: Перед компиляцией fswatch из исходных текстов убедитесь, что в системе установлены GNU GCC (компилятор C) и средства разработки (build-essential на Debian/Ubuntu). Если их нет, установите их с помощью следующей команды в соответствующих дистрибутивах Linux.
sudo dnf group install 'Development Tools' [On RHEL/CentOS/Fedora and Rocky/AlmaLinux] sudo apt-get install build-essential [On Debian, Ubuntu and Mint]
В дистрибутивах Debian/Ubuntu при выполнении команды fswatch может возникнуть следующая ошибка.
fswatch: error while loading shared libraries: libfswatch.so.13: cannot open shared object file: No such file or directory
Для ее устранения необходимо выполнить приведенную ниже команду, которая поможет обновить ссылки и кэш динамических библиотек, прежде чем вы сможете начать использовать 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
Следующая команда отслеживает изменения в файле /var/log/auth.log каждые 5 секунд:
fswatch -l 5 /var/log/auth.log
С помощью опции -t
или --timestamp
печатается метка времени для каждого события, для печати времени в формате UTC используйте опцию -u
или --utf-time
. Вы также можете отформатировать время с помощью опции формата -f
или --format-time
:
fswatch --timestamp /var/log/auth.log
Далее, -x
или --event-flags
указывает fswatch на печать флагов события вместе с путем к событию. Вы можете использовать опцию -event-field-seperator
для печати событий с определенным разделителем.
fswatch --events-flags ~ /var/log/auth.log
Чтобы напечатать числовое значение события, указывающего на изменения в вашем каталоге home и файле /var/log/auth.log, используйте опцию -n
или --numeric
, как показано ниже:
fswatch --numeric ~ /var/log/auth.log
Возможно, вы можете просмотреть страницу man для получения подробной информации об использовании опций:
man fswatch
Для получения дополнительной информации и использования посетите репозиторий fswatch на Github: https://github.com/emcrisostomo/fswatch.
В этом посте мы рассмотрели простую утилиту командной строки, которая поможет пользователям Linux получать уведомления об изменении содержимого указанных файлов или иерархий каталогов.
Я надеюсь, что установка прошла успешно, но если это не так, постарайтесь связаться с нами через форму обратной связи ниже. Кроме того, если вы уже пользовались этой программой, вы можете поделиться с нами своими впечатлениями о работе с fswatch.
Комментарии (0)