Поиск по сайту:

Watchman — инструмент наблюдения за файлами и каталогами на предмет изменений


Watchman – это кроссплатформенная служба наблюдения за файлами с открытым исходным кодом, которая отслеживает файлы и записи или выполняет действия при их изменении. Он разработан Facebook и работает на Linux, OS X, FreeBSD и Solaris. Он работает по модели клиент-сервер и использует утилиту inotify ядра Linux для предоставления более эффективных уведомлений.

Полезные концепции Watchman

  • Он рекурсивно наблюдает за одним или несколькими деревьями каталогов.
  • Каждый наблюдаемый каталог называется корневым.
  • Его можно настроить через командную строку или файл конфигурации, написанный в формате JSON.
  • Он записывает изменения в файлы журналов.
  • Поддерживает подписку на изменения файлов, происходящие в корне.
  • Позволяет запрашивать корень изменений файла с момента последней проверки или текущего состояния дерева.
  • Он может смотреть весь проект.

В этой статье мы объясним, как установить и использовать watchman для просмотра (мониторинга) файлов и записи их изменений в Linux. Мы также кратко продемонстрируем, как отслеживать каталог и вызывать сценарий при его изменении.

Установка службы наблюдения за файлами Watchman в Linux

Мы установим службу watchman из исходных кодов, поэтому сначала установите эти необходимые зависимости libssl-dev, autoconf, automake libtool, setuptools, python-devel и libfolly, используя следующую команду в вашем дистрибутиве Linux.

----------- On Debian/Ubuntu ----------- 
sudo apt install autoconf automake build-essential python-setuptools python-dev libssl-dev libtool 

----------- On RHEL/CentOS -----------
yum install autoconf automake python-setuptools python-devel openssl-devel libssl-devel libtool 
yum groupinstall 'Development Tools' 

----------- On Fedora -----------
sudo dnf install autoconf automake python-setuptools openssl-devel libssl-devel libtool 
sudo dnf groupinstall 'Development Tools'  

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

git clone https://github.com/facebook/watchman.git
cd watchman
git checkout v4.9.0  
./autogen.sh
./configure
make
sudo make install

Просмотр файлов и каталогов с помощью Watchman в Linux

Watchman можно настроить двумя способами: (1) через командную строку, когда демон работает в фоновом режиме, или (2) через файл конфигурации, написанный в формате JSON.

Чтобы просмотреть каталог (например, ~/bin) на наличие изменений, выполните следующую команду.

watchman watch ~/bin/

Следующая команда записывает файл конфигурации с именем state в /usr/local/var/run/watchman/-state/ в формате JSON, а также журнал. файл с именем log в том же месте.

Вы можете просмотреть два файла с помощью команды cat, как показано.

cat /usr/local/var/run/watchman/aaronkilik-state/state
cat /usr/local/var/run/watchman/aaronkilik-state/log

Вы также можете определить, какое действие следует запускать, когда в каталоге отслеживаются изменения. Например, в следующей команде «test-trigger» — это имя триггера, а ~bin/pav.sh — это сценарий, который будет вызываться при обнаружении изменений. в отслеживаемом каталоге.

В целях тестирования сценарий pav.sh просто создает файл с меткой времени (т. е. file.$time.txt) в том же каталоге. где хранится скрипт.

time=`date +%Y-%m-%d.%H:%M:%S`
touch file.$time.txt

Сохраните файл и сделайте скрипт исполняемым, как показано.

chmod +x ~/bin/pav.sh

Чтобы запустить триггер, выполните следующую команду.

watchman -- trigger ~/bin 'test-trigger' -- ~/bin/pav.sh

Когда вы запускаете watchman, чтобы следить за каталогом, он добавляется в список наблюдения, и для его просмотра выполните следующую команду.

watchman watch-list 

Чтобы просмотреть список триггеров для корня, выполните следующую команду (замените ~/bin на имя root).

watchman trigger-list ~/bin

На основе приведенной выше конфигурации каждый раз при изменении каталога ~/bin внутри него создается такой файл, как file.2019-03-13.23:14:17.txt. и вы можете просмотреть их с помощью команды ls.

ls

Удаление службы Watchman в Linux

Если вы хотите удалить watchman, перейдите в исходный каталог и выполните следующие команды:

sudo make uninstall
cd '/usr/local/bin' && rm -f watchman 
cd '/usr/local/share/doc/watchman-4.9.0 ' && rm -f README.markdown 

Для получения дополнительной информации посетите репозиторий Watchman на Github: https://github.com/facebook/watchman.

Возможно, вам также будет интересно прочитать следующие статьи по теме.

  1. Swatchdog — простой наблюдатель за файлами журналов в реальном времени в Linux
  2. 4 способа просмотра или мониторинга файлов журналов в режиме реального времени
  3. fswatch — отслеживает изменения файлов и каталогов в Linux
  4. Pyintify — мониторинг изменений файловой системы в реальном времени в Linux
  5. Inav – просмотр журналов Apache в реальном времени в Linux

Watchman – это служба наблюдения за файлами с открытым исходным кодом, которая отслеживает файлы и записи или запускает действия при их изменении. Используйте форму обратной связи ниже, чтобы задать вопросы или поделиться с нами своими мыслями.