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

Watchman es un servicio de observación de archivos de código abierto y multiplataforma que observa archivos y registros 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 directorio.
  • Cada directorio observado se denomina raíz.
  • Se puede configurar a través de la línea de comandos o un archivo de configuración escrito en formato JSON.
  • Registra cambios en archivos de registro.
  • Admite la suscripción a los cambios de archivo que se producen en una raíz.
  • Le permite consultar una raíz para ver los cambios del archivo desde la última vez que verificó, o el estado actual del árbol.
  • Puede ver un proyecto completo.

En este artículo, explicaremos cómo instalar y usar watchman para ver (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 de Watchman File Watching Service 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 construir watchman descargando su repositorio github, moverse 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/

Ver un directorio en LinuxVer un directorio en Linux

El siguiente comando escribe un archivo de configuración llamado stateen / usr / local / var / run / watchman / &ampltusername&ampgt -state / , en formato JSON, así como un archivo de registro llamado logen 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 desencadenar cuando un directorio que está siendo observado para cambios. Por ejemplo, en el siguiente comando, ” test-trigger” es el nombre del disparador y bin/pav.shes el script que se invocará cuando se detecten cambios en el directorio que se está monitoreando.

Para propósitos de prueba, la pav.shsecuencia de comandos simplemente crea un archivo con una marca de tiempo (es decir file.$time.txt) dentro del mismo directorio donde se almacena la secuencia de comandos.

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 lanzar el disparador, ejecute el siguiente comando.

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

Crear un activador en el directorioCrear un activador en el directorio

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

$ watchman watch-list 

Ver lista de observación Ver lista de observación

Para ver la lista de desencadenantes de una raíz , ejecute el siguiente comando (reemplácelo /bincon el rootnombre).

$ watchman trigger-list /bin

Mostrar lista de activadores para una raízMostrar lista de activadores para una raíz

Con base en la configuración anterior, cada vez que /bincambia el directorio, file.2019-03-13.23:14:17.txtse crea un archivo tal como se crea dentro de él y puede verlos usando el comando ls.

$ ls

Prueba de la configuración de WatchmanPrueba de la configuración de Watchman

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 de Watchman Github: https://github.com/facebook/watchman .

También le puede interesar leer los siguientes artículos relacionados.

  1. Swatchdog – Observador de archivos de registro simple en tiempo real en Linux
  2. 4 formas de ver o monitorear archivos de registro en tiempo real
  3. fswatch – Supervisa cambios en archivos y directorios en Linux
  4. Pyintify: supervise los cambios del sistema de archivos en tiempo real en Linux
  5. Inav – Ver 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 registros, o activa acciones, cuando cambian. Utilice el formulario de comentarios a continuación para hacer preguntas o compartir sus pensamientos con nosotros.

Herramientas de monitoreo

Leave a Comment

Your email address will not be published. Required fields are marked *

Hazlo Linux