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 inotifica la utilidad del kernel de Linux para proporcionar una notificación más poderosa.

  • Observa de forma recursiva uno o más árboles de directorios.
  • Cada directorio observado se denomina 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 del 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 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 ver cambios en un directorio (por ejemplo, ~/bin ), 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 archivo de registro 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 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.sh es el script que se invocará cuando se detecten cambios en el directorio que se está supervisando.

Para propósitos 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 script.

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 de una raíz, 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 puede 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 de Watchman Github: https://github.com/facebook/watchman.

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

  1. Swatchdog: monitor 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: vea 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.