Библиотека сайта rus-linux.net
fswatch – отслеживаем изменения файлов и каталогов в Linux
Оригинал: fswatch – Track File and Directory Changes in Linux
Автор: Aaron Kili
Дата публикации: 23 апреля 2024 г.
Перевод: В. Костромин
Дата перевода: 12 мая 2024 г.
fswatch — это кроссплатформенный монитор изменений файлов, который получает уведомления, когда содержимое указанных файлов или каталогов изменяется или модифицируется.
Он использует следующие типы мониторов из различных операционных систем:
- Монитор, основанный на API событий файловой системы Apple OS X.
- Монитор на основе kqueue, интерфейса уведомлений, присутствующего во FreeBSD 4.1, который также поддерживается во многих системах *BSD, включая OS X.
- Монитор, основанный на API уведомления о событиях файлов ядра Solaris и его производных.
- Монитор на основе inotify — подсистемы ядра, которая показывает изменения файловой системы.
- Монитор на основе ReadDirectoryChangesW, API Windows, который записывает изменения в каталоге.
- Монитор, который регулярно проверяет состояние файловой системы, сохраняет время изменения файлов в памяти и вручную определяет изменения файловой системы (работает везде, где можно использовать команду stat).
Возможности fswatch
- Поддерживает несколько API-интерфейсов для конкретных ОС.
- Использует рекурсивный мониторинг каталогов.
- Позволяет фильтровать пути, используя возможность включения/исключения в регулярных выражениях.
- Поддерживает настраиваемый формат записи.
- Кроме того, он поддерживает периодические события простоя (idle-events).
Как установить fswatch в системах Linux
Чтобы установить fswatch в Linux, используйте одну из следующих команд, соответствующую вашему дистрибутиву Linux.
sudo apt install fswatch [В Debian, Ubuntu и Mint] sudo yum install fswatch [В RHEL/CentOS/Fedora и Rocky/AlmaLinux] sudo emerge -a sys-apps/fswatch [В Gentoo Linux] sudo apk add fswatch [В Alpine Linux] sudo pacman -S fswatch [В Arch Linux] sudo zypper install fswatch [В OpenSUSE] sudo pkg install fswatch [Во FreeBSD]
Если fswatch недоступен для установки из системных репозиториев по умолчанию, вы можете выполнить сборку из исходного кода, как показано в следующих инструкциях по установке.
Сначала клонируйте последнюю версию git-репозитория fswatch, используя команду git clone, и установите fswatch, как показано ниже:
git clone https://github.com/emcrisostomo/fswatch.git cd fswatch ./autogen.sh ./configure make sudo make install
Если нет, установите их с помощью следующей команды в соответствующих дистрибутивах Linux.
sudo dnf group install 'Development Tools' [В RHEL/CentOS/Fedora и Rocky/AlmaLinux] sudo apt-get install build-essential [В Debian, Ubuntu и Mint]
В дистрибутивах Debian/Ubuntu при выполнении команды fswatch может возникнуть следующая ошибка.
fswatch: error while loading shared libraries: libfswatch.so.13: cannot open shared object file: No such file or directory
Чтобы это исправить, вам необходимо выполнить команду
sudo ldconfigЭто позволит обновить ссылки и кэш динамических библиотек, прежде чем вы сможете начать использовать fswatch.
Как использовать 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
Чтобы напечатать числовое значение события, указывающего изменения в вашем домашнем каталоге и файле /var/log/auth.log, используйте -n
или вариант --numeric
, как показано ниже:
fswatch --numeric ~ /var/log/auth.log
Возможно, вы захотите просмотреть справочную страницу fswatch для получения подробных опций использования и другой информации:
man fswatch
Для получения дополнительной информации об использовании fswatch посетите репозиторий fswatch на Github: https://github.com/emcrisostomo/fswatch
В этой заметке мы рассмотрели простую утилиту командной строки, которая помогает пользователям Linux получать уведомления об изменении содержимого указанных файлов или иерархии каталогов.
Надеюсь, с установкой все прошло хорошо. Если у вас это не так, попробуйте связаться с нами через форму обратной связи (в оригинальной статье на сайте tecmint.com). Кроме того, если вы уже использовали его раньше, возможно, вы захотите поделиться с нами некоторыми мыслями о своем опыте работы с fswatch.
- - -