fswatch – это кроссплатформенный монитор изменений файлов, который получает уведомления при изменении содержимого указанных файлов или каталогов.
Он выполняет четыре типа мониторов на разных операционных системах, таких как:
- A monitor build on the File System Events API of Apple OS X.
- A monitor based on kqueue, a notification interface present in FreeBSD 4.1 also supported on many *BSD systems, OS X inclusive.
- A monitor based on File Events Notification API of the Solaris kernel plus its spin-offs.
- A monitor based on inotify, a kernel subsystem that shows file system modifications to apps.
- A monitor based on ReadDirectoryChangesW, a Windows API that records alters to a directory.
- A monitor that regularly check that status of file system, keeps file modification times in memory, and manually determine file system changes (which works anywhere, where stat can be used).
Особенности fswatch
- Поддерживает несколько API, специфичных для ОС
- Позволяет рекурсивное мониторинг каталогов
- Выполняет фильтрацию пути с использованием регулярных выражений включения и исключения
- Поддерживает настраиваемый формат записи
- Кроме того, поддерживает периодические события простоя
Как установить fswatch в системах Linux
К сожалению, пакет fswatch недоступен для установки из репозиториев системы по умолчанию в любых дистрибутивах Linux. Единственный способ установить последнюю версию fswatch – это собрать из исходного tarball, как показано в следующих инструкциях по установке.
Сначала загрузите последний tarball 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), прежде чем компилировать fswatch из исходного кода. Если нет, установите его, используя следующую команду на вашем соответствующем дистрибутиве Linux.
# yum group install 'Development Tools' [On CentOS/RHEL] # dnf group install 'Development Tools' [On Fedora 22+ Versions] $ sudo apt-get install build-essential [On Debian/Ubuntu Versions]
На дистрибутивах Debian/Ubuntu вы можете получить следующую ошибку при выполнении команды fswatch..
fswatch: error while loading shared libraries: libfswatch.so.6: 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
Для печати числового значения события, указывающего на изменения в вашем домашнем каталоге и файле /var/log/auth.log, используйте параметр -n
или --numeric
следующим образом:
$ fswatch --numeric ~ /var/log/auth.log
Возможно, вы можете ознакомиться с руководством по использованию fswatch для получения подробной информации и вариантов использования:
$ man fswatch
Для получения дополнительной информации и использования посетите репозиторий Github fswatch: https://github.com/emcrisostomo/fswatch
В этом посте мы рассмотрели простую утилиту командной строки, которая поможет пользователям Linux получать уведомления, когда содержимое указанных файлов или иерархий каталогов изменяется.
I hope all went well with the installation, if that is not the case for you, make an effort to reach us via the feedback form below. In addition, in case you have used it before, you may want to offer us some thoughts about your experience with fswatch.
Source:
https://www.tecmint.com/fswatch-monitors-files-and-directory-changes-modifications-in-linux/