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/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.
- Swatchdog – Observador simples de arquivos de log em tempo real no Linux
- 4 maneiras de assistir ou monitorar arquivos de log em tempo real
- fswatch – Monitora arquivos e alterações de diretório no Linux
- Pyintify – Monitore alterações no sistema de arquivos em tempo real no Linux
- 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.