Pesquisa de site

Watchman - Uma ferramenta de observação de arquivos e diretórios para alterações


Watchman é um serviço de monitoramento de arquivos de código aberto e multiplataforma que monitora arquivos e registra ou executa ações quando eles mudam. Ele é desenvolvido pelo Facebook e roda em Linux, OS X, FreeBSD e Solaris. Ele é executado em um modelo cliente-servidor e emprega o utilitário inotify do kernel Linux para fornecer uma notificação mais poderosa.

Conceitos úteis de Watchman

  • Ele observa recursivamente uma ou mais árvores de diretórios.
  • Cada diretório monitorado é chamado de raiz.
  • Ele pode ser configurado por meio da linha de comando ou de um arquivo de configuração escrito no formato JSON.
  • Ele registra alterações nos arquivos de log.
  • Suporta assinatura para alterações de arquivo que ocorrem em uma raiz.
  • Permite consultar uma raiz sobre alterações no arquivo desde a última verificação ou sobre o estado atual da árvore.
  • Ele pode assistir a um projeto inteiro.

Neste artigo, explicaremos como instalar e usar o watchman para observar (monitorar) arquivos e registrar quando eles mudam no Linux. Também demonstraremos brevemente como monitorar um diretório e invocar um script quando ele for alterado.

Instalando o serviço Watchman File Watching no Linux

Instalaremos o serviço watchman a partir dos fontes, então primeiro instale essas dependências necessárias libssl-dev, autoconf, automake libtool, setuptools, python-devel e libfolly usando o seguinte comando em sua distribuição 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'  

Uma vez instaladas as dependências necessárias, você pode começar a construir o watchman baixando seu repositório github, mover para o repositório local, configurar, construir e instalá-lo usando os seguintes comandos.

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

Assistindo arquivos e diretórios com Watchman no Linux

Watchman pode ser configurado de duas maneiras: (1) através da linha de comando enquanto o daemon está sendo executado em segundo plano ou (2) através de um arquivo de configuração escrito no formato JSON.

Para observar alterações em um diretório (por exemplo, ~/bin), execute o seguinte comando.

watchman watch ~/bin/

O comando a seguir grava um arquivo de configuração chamado state em /usr/local/var/run/watchman/-state/, no formato JSON, bem como um log arquivo chamado log no mesmo local.

Você pode visualizar os dois arquivos usando o comando cat como show.

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

Você também pode definir qual ação será acionada quando um diretório estiver sendo monitorado em busca de alterações. Por exemplo, no comando a seguir, 'test-trigger' é o nome do gatilho e ~bin/pav.sh é o script que será invocado quando alterações forem detectadas no diretório que está sendo monitorado.

Para fins de teste, o script pav.sh simplesmente cria um arquivo com um timestamp (ou seja, file.$time.txt) dentro do mesmo diretório onde o script está armazenado.

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

Salve o arquivo e torne o script executável conforme mostrado.

chmod +x ~/bin/pav.sh

Para iniciar o gatilho, execute o seguinte comando.

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

Quando você executa watchman para ficar de olho em um diretório, ele é adicionado à lista de observação e para visualizá-lo, execute o seguinte comando.

watchman watch-list 

Para visualizar a lista de acionadores de um root, execute o seguinte comando (substitua ~/bin pelo nome root).

watchman trigger-list ~/bin

Com base na configuração acima, cada vez que o diretório ~/bin muda, um arquivo como file.2019-03-13.23:14:17.txt é criado dentro dele e você pode visualizá-los usando o comando ls.

ls

Desinstalando o serviço Watchman no Linux

Se você deseja desinstalar o watchman, vá para o diretório de origem e execute os seguintes comandos:

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

Para obter mais informações, visite o repositório Watchman no Github: https://github.com/facebook/watchman.

Você também pode gostar de ler os seguintes artigos relacionados.

  1. Swatchdog – Observador simples de arquivos de log em tempo real no Linux
  2. 4 maneiras de assistir ou monitorar arquivos de log em tempo real
  3. fswatch – Monitora arquivos e alterações de diretório no Linux
  4. Pyintify – Monitore alterações no sistema de arquivos em tempo real no Linux
  5. Inav – Assista aos logs do Apache em tempo real no Linux

Watchman é um serviço de monitoramento de arquivos de código aberto que monitora arquivos e registros, ou aciona ações, quando eles mudam. Use o formulário de feedback abaixo para fazer perguntas ou compartilhar suas idéias conosco.