Búsqueda de sitios web

Watchman: una herramienta de supervisión de cambios en archivos y directorios


Watchman es un servicio de observación de archivos multiplataforma y de código abierto que observa archivos y registra o realiza acciones cuando cambian. Está desarrollado por Facebook y se ejecuta en Linux, OS X, FreeBSD y Solaris. Se ejecuta en un modelo cliente-servidor y emplea la utilidad inotify del kernel de Linux para proporcionar una notificación más potente.

Conceptos útiles de Watchman

  • Observa de forma recursiva uno o más árboles de directorios.
  • Cada directorio supervisado se llama raíz.
  • Se puede configurar mediante la línea de comandos o un archivo de configuración escrito en formato JSON.
  • Registra los cambios en los archivos de registro.
  • Admite la suscripción a cambios de archivos que ocurren en una raíz.
  • Le permite consultar una raíz para ver los cambios en el archivo desde la última vez que lo verificó o el estado actual del árbol.
  • Puede ver un proyecto completo.

En este artículo, explicaremos cómo instalar y usar watchman para observar (monitorear) archivos y registrar cuando cambian en Linux. También demostraremos brevemente cómo observar un directorio e invocar un script cuando cambia.

Instalación del servicio de observación de archivos Watchman en Linux

Instalaremos el servicio watchman desde las fuentes, así que primero instale estas dependencias requeridas libssl-dev, autoconf, automake libtool, setuptools, python-devel y libfolly usando el siguiente comando en su distribución de 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'  

Una vez instaladas las dependencias requeridas, puede comenzar a compilar Watchman descargando su repositorio de github, pasar al repositorio local, configurarlo, compilarlo e instalarlo usando los siguientes comandos.

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

Ver archivos y directorios con Watchman en Linux

Watchman se puede configurar de dos maneras: (1) a través de la línea de comandos mientras el demonio se ejecuta en segundo plano o (2) a través de un archivo de configuración escrito en formato JSON.

Para observar un directorio (por ejemplo, ~/bin) en busca de cambios, ejecute el siguiente comando.

watchman watch ~/bin/

El siguiente comando escribe un archivo de configuración llamado state en /usr/local/var/run/watchman/-state/, en formato JSON, así como un registro. archivo llamado log en la misma ubicación.

Puede ver los dos archivos usando el comando cat como se muestra.

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

También puede definir qué acción activar cuando se observan cambios en un directorio. Por ejemplo, en el siguiente comando, 'test-trigger' es el nombre del activador y ~bin/pav.sh es el script que se invocará cuando se detecten cambios. en el directorio que se está monitoreando.

Para fines de prueba, el script pav.sh simplemente crea un archivo con una marca de tiempo (es decir, file.$time.txt) dentro del mismo directorio. donde se almacena el guión.

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

Guarde el archivo y haga que el script sea ejecutable como se muestra.

chmod +x ~/bin/pav.sh

Para iniciar el disparador, ejecute el siguiente comando.

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

Cuando ejecuta watchman para vigilar un directorio, se agrega a la lista de vigilancia y, para verlo, ejecute el siguiente comando.

watchman watch-list 

Para ver la lista de activadores para una root, ejecute el siguiente comando (reemplace ~/bin con el nombre de root).

watchman trigger-list ~/bin

Según la configuración anterior, cada vez que cambia el directorio ~/bin, se crea un archivo como file.2019-03-13.23:14:17.txt dentro de él. y puedes verlos usando el comando ls.

ls

Desinstalación del servicio Watchman en Linux

Si desea desinstalar watchman, vaya al directorio de origen y ejecute los siguientes 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 obtener más información, visite el repositorio Watchman Github: https://github.com/facebook/watchman.

Quizás también te interese leer los siguientes artículos relacionados.

  1. Swatchdog: observador simple de archivos de registro en tiempo real en Linux
  2. 4 formas de ver o monitorear archivos de registro en tiempo real
  3. fswatch: monitorea archivos y cambios de directorio en Linux
  4. Pyintify: monitoree los cambios del sistema de archivos en tiempo real en Linux
  5. Inav: vea los registros de Apache en tiempo real en Linux

Watchman es un servicio de observación de archivos de código abierto que observa archivos y registra, o activa acciones, cuando cambian. Utilice el formulario de comentarios a continuación para hacer preguntas o compartir sus pensamientos con nosotros.