🐧 Как мониторить изменения файлов с помощью fswatch на Linux |

🐧 Как мониторить изменения файлов с помощью fswatch на Linux

Мануал

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, выполните:

sudo apt install fswatch

Чтобы установить fswatch в Fedora, RHEL, CentOS, AlmaLinux и Rocky Linux, включите репозиторий [EPEL] с помощью команды:

sudo dnf install epel-release

Затем установите fswatch с помощью команды:

sudo dnf install fswatch

Чтобы установить fswatch в openSUSE, выполните команду:

sudo zypper install fswatch

Установка fswatch из исходного кода

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

Перед компиляцией необходимо установить инструменты разработки в вашем дистрибутиве Linux.

Для установки инструментов разработки в различных дистрибутивах Linux обратитесь к следующему руководству.

Затем загрузите исходный файл fswatch:

wget https://github.com/emcrisostomo/fswatch/releases/download/1.17.1/fswatch-1.17.1.tar.gz

Распакуйте загруженный tarball:

tar -zxvf fswatch-1.17.1.tar.gz

Перейдите в папку проекта:

cd fswatch-1.17.1/

Наконец, скомпилируйте и установите fswatch, выполнив последовательно следующие команды.

./configure
make
sudo make install

Наконец, выполните следующую команду, чтобы обновить ссылки и кэш для динамических библиотек:

sudo ldconfig

Если вы не выполните приведенную выше команду, в системах GNU/Linux может возникнуть следующая ошибка.

fswatch: error while loading shared libraries: libfswatch.so.6: cannot open shared object file: No such file or directory

Наконец, проверьте версию fswatch, чтобы убедиться, что она установлена правильно:

fswatch --version
fswatch 1.17.1
Copyright (C) 2013-2021 Enrico M. Crisostomo <enrico.m.crisostomo@gmail.com>.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by Enrico M. Crisostomo.

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

В FreeBSD fswatch может быть установлен с помощью pkg от имени root:

pkg install fswatch-mon

Мониторинг изменений файлов с помощью fswatch в Linux

Использование fswatch не представляет собой ничего сложного.

Типичный синтаксис fswatch следующий:

fswatch [options] ... path-0 ... path-n

Чтобы проверить, как работает fswatch, откройте два окна Терминала (назовем их Терминал 1 и Терминал 2).

В Терминале 1 выполните команду fswatch для мониторинга каталога $HOME.

fswatch /home/kali/

В терминале 2 выполняются некоторые операции, такие как создание файлов/папок, удаление файлов, изменение файлов и т.д.

Все, что вы делаете в терминале 2, будет отображаться на терминале 1.

Терминал 1 – запущена команда fswatch и ведется мониторинг изменений файлов:

По умолчанию fswatch выбирает лучший мониторинг, доступный на текущей платформе, с точки зрения производительности и потребления ресурсов.

В Linux мониторингом по умолчанию является inotify.

По умолчанию fswatch будет продолжать отслеживать изменения файлов до тех пор, пока вы вручную не остановите его нажатием клавиш CTRL+C.

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

Чтобы получить список доступных мониторингов на текущей платформе (в нашем случае Linux), выполните команду:

fswatch -M

или

fswatch --list-monitors

Пример вывода:

inotify_monitor
poll_monitor

Мониторинг определенного файла или папки

Чтобы выполнить мониторинг определенного файла или каталога с определенным параметром монитора, выполните команду:

swatch -m kqueue_monitor /home/itsecforu/

Вы также можете выйти из fswatch после получения первого набора событий, указав опцию -1, как показано в следующей команде:

fswatch -1 /home/itsecforu/

Эта команда завершится сразу после получения первого набора событий.

fswatch будет отслеживать изменения во всех файлах/папках по указанному пути.

Если вы хотите следить за изменениями только в каталогах, используйте опцию -d.

fswatch -d /home/itsecforu/

Конечно, есть и другие варианты.

За подробными инструкциями обращайтесь к man-страницам или странице документации проекта.

man fswatch

см. также:

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий

  1. Даниил

    Auditd не?

    Ответить