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/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.
Возможно, вам также будет интересно прочитать следующие статьи по теме.
- Swatchdog — простой наблюдатель за файлами журналов в реальном времени в Linux
- 4 способа просмотра или мониторинга файлов журналов в режиме реального времени
- fswatch — отслеживает изменения файлов и каталогов в Linux
- Pyintify — мониторинг изменений файловой системы в реальном времени в Linux
- Inav – просмотр журналов Apache в реальном времени в Linux
Watchman – это служба наблюдения за файлами с открытым исходным кодом, которая отслеживает файлы и записи или запускает действия при их изменении. Используйте форму обратной связи ниже, чтобы задать вопросы или поделиться с нами своими мыслями.