Watchman - Uma ferramenta de monitoramento de arquivos e diretórios para alterações


O Watchman é um serviço de exibição de arquivos de software livre e de plataforma cruzada que assiste a arquivos e registros ou executa ações quando eles são alterados. Ele é desenvolvido pelo Facebook e é executado no 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.

  • It recursively watches watch one or more directory trees.
  • Each watched directory is called a root.
  • It can be configured via the command-line or a configuration file written in JSON format.
  • It records changes to log files.
  • Supports subscription to file changes that occur in a root.
  • Allows you to query a root for file changes since you last checked, or the current state of the tree.
  • It can watch an entire project.

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

Instalando o serviço Watchman File Watching no Linux

Vamos instalar o serviço watchman a partir de fontes, então primeiro instale estas dependências necessárias libssl-dev , autoconf , automake < strong> libtool , setuptools , python-devel e libfolly usando o seguinte comando na 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 libssl-devel libtool 
# yum groupinstall 'Development Tools' 

----------- On Fedora -----------
$ sudo dnf install autoconf automake python-setuptools 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 o repositório do github, mover para o repositório local, configurá-lo, construí-lo 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 o Watchman no Linux

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

Para assistir a um diretório (por exemplo, ~/bin ) para alterações, 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/& lt; nome do usuário & gt; -state/, no formato JSON, bem como arquivo de log chamado log no mesmo local.

Você pode ver 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 observado quanto a alterações. Por exemplo, no comando a seguir, ' test-trigger ' é o nome do acionador e ~ bin/pav.sh é o script que será invocado quando as 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..txt ) dentro do mesmo diretório onde o script é armazenado.

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

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

$ chmod +x ~/bin/pav.sh

Para iniciar o acionador, execute o seguinte comando.

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

Quando você executar o vigia para ficar de olho em um diretório, adicioná-lo à lista de observação e visualizá-lo, execute o seguinte comando.

$ watchman watch-list 

Para ver a lista de gatilhos para uma raiz , 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 é alterado, 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 Watchman Service no Linux

Se você quiser desinstalar o vigia , 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 mais informações, visite o repositório do Watchman Github: https://github.com/facebook/watchman.

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

  1. Swatchdog – Simple Log File Watcher in Real-Time in Linux
  2. 4 Ways to Watch or Monitor Log Files in Real Time
  3. fswatch – Monitors Files and Directory Changes in Linux
  4. Pyintify – Monitor Filesystem Changes in Real Time in Linux
  5. Inav – Watch Apache Logs in Real Time in Linux

O Watchman é um serviço de visualização de arquivos de código aberto que assiste a arquivos e registros ou aciona ações quando elas são alteradas. Use o formulário de comentários abaixo para fazer perguntas ou compartilhar suas opiniões conosco.