Fswatch – это бесплатная мультиплатформенная утилита мониторинга изменений файлов с открытым исходным кодом, которая уведомляет нас, когда содержимое указанных файлов или каталогов модифицируется или изменяется.
Используя fswatch, мы можем легко отслеживать изменения, вносимые в файлы и/или каталоги.
Она поддерживает все операционные системы, включая GNU/Linux, *BSD, Mac OS X, Solaris, Microsoft Windows и др.
В этом кратком руководстве мы покажем вам, как отслеживать изменения файлов с помощью fswatch в Linux и Unix-подобных операционных системах.
Типы мониторинга
Fswatch реализует следующие типы мониторинга:
- Мониторинг, основанный на API событий файловой системы Apple OS X.
- Мониторинг, основанный на kqueue, интерфейсе уведомлений, представленном во FreeBSD 4.1.
- Мониторинг, основанный на API уведомлений о файловых событиях ядра Solaris и его производных.
- Мониторинг, основанный на inotify, подсистеме ядра Linux, которая сообщает приложениям об изменениях в файловой системе.
- Мониторинг, основанный на ReadDirectoryChangesW, API Microsoft Windows, который сообщает об изменениях в каталоге.
- Мониторинг, который периодически проводит статистику файловой системы, сохраняет в памяти время модификации файлов и вручную вычисляет изменения файловой системы.B
Особенности
Что касается особенностей fswatch, то можно перечислить следующие:
- Кроссплатформенная утилита с открытым исходным кодом.
- Поддержка многих API, специфичных для конкретных ОС.
- Рекурсивный мониторинг каталогов.
- Фильтрация путей с помощью включающих и исключающих регулярных выражений.
- Настраиваемый формат записей.
- Поддержка периодических событий простоя.
- И многое другое.
Установка fswatch на Linux
Утилита fswatch доступна в стандартных репозиториях популярных дистрибутивов Linux.
Чтобы установить fswatch в Debian, Ubuntu, Linux Mint, Pop OS и других системах на базе APT, выполните:
Чтобы установить fswatch в Fedora, RHEL, CentOS, AlmaLinux и Rocky Linux, включите репозиторий [EPEL] с помощью команды:
Затем установите fswatch с помощью команды:
Чтобы установить fswatch в openSUSE, выполните команду:
Установка fswatch из исходного кода
Если fswatch недоступен для вашего дистрибутива, вы можете вручную скомпилировать и установить последнюю версию из исходников, как описано ниже.
Перед компиляцией необходимо установить инструменты разработки в вашем дистрибутиве Linux.
Для установки инструментов разработки в различных дистрибутивах Linux обратитесь к следующему руководству.
Затем загрузите исходный файл fswatch:
Распакуйте загруженный tarball:
Перейдите в папку проекта:
Наконец, скомпилируйте и установите fswatch, выполнив последовательно следующие команды.
Наконец, выполните следующую команду, чтобы обновить ссылки и кэш для динамических библиотек:
Если вы не выполните приведенную выше команду, в системах GNU/Linux может возникнуть следующая ошибка.
Наконец, проверьте версию fswatch, чтобы убедиться, что она установлена правильно:
Установка fswatch на FreeBSD
В FreeBSD fswatch может быть установлен с помощью pkg от имени root:
Мониторинг изменений файлов с помощью fswatch в Linux
Использование fswatch не представляет собой ничего сложного.
Типичный синтаксис fswatch следующий:
Чтобы проверить, как работает fswatch, откройте два окна Терминала (назовем их Терминал 1 и Терминал 2).
В Терминале 1 выполните команду fswatch для мониторинга каталога $HOME.
В терминале 2 выполняются некоторые операции, такие как создание файлов/папок, удаление файлов, изменение файлов и т.д.
Все, что вы делаете в терминале 2, будет отображаться на терминале 1.
Терминал 1 – запущена команда fswatch и ведется мониторинг изменений файлов:
По умолчанию fswatch выбирает лучший мониторинг, доступный на текущей платформе, с точки зрения производительности и потребления ресурсов.
В Linux мониторингом по умолчанию является inotify.
По умолчанию fswatch будет продолжать отслеживать изменения файлов до тех пор, пока вы вручную не остановите его нажатием клавиш CTRL+C.
Список мониторингов
Чтобы получить список доступных мониторингов на текущей платформе (в нашем случае Linux), выполните команду:
или
Пример вывода:
inotify_monitor poll_monitor
Мониторинг определенного файла или папки
Чтобы выполнить мониторинг определенного файла или каталога с определенным параметром монитора, выполните команду:
Вы также можете выйти из fswatch после получения первого набора событий, указав опцию -1, как показано в следующей команде:
Эта команда завершится сразу после получения первого набора событий.
fswatch будет отслеживать изменения во всех файлах/папках по указанному пути.
Если вы хотите следить за изменениями только в каталогах, используйте опцию -d.
Конечно, есть и другие варианты.
За подробными инструкциями обращайтесь к man-страницам или странице документации проекта.
см. также:
- 🐧 20 команд мониторинга Linux, которые вы должны знать
- 🔎 11 лучших инструментов мониторинга с открытым исходным кодом для Linux
- 🔎 Мониторинг использования системных ресурсов Linux с помощью SysMonTask
- 📜 Скрипты Bash для сканирования и мониторинга сети
- 🐧 Обзор средств мониторинга и управления логами с открытым исходным кодом для Linux
- ☸️ Мониторинг контейнеров Docker и Kubernetes с помощью Weave Scope
- 🔍 Мониторинг системных ресурсов Linux с помощью SAR (System Activity Report)
- 🐧 Лучшие инструменты командной строки для мониторинга и диагностики графических процессоров Linux
Auditd не?