Watchman - Una herramienta de visualización de archivos y directorios para cambios


Watchman es un servicio de visualización de archivos de código abierto y multiplataforma que observa archivos y graba 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.

  • 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.

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

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

Instalaremos el servicio watchman desde las fuentes, así que primero instale estas dependencias necesarias libssl-dev , autoconf , automake < strong> 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 libssl-devel libtool 
# yum groupinstall 'Development Tools' 

----------- On Fedora -----------
$ sudo dnf install autoconf automake python-setuptools libssl-devel libtool 
$ sudo dnf groupinstall 'Development Tools'  

Una vez instaladas las dependencias requeridas, puedes comenzar a construir watchman descargando su repositorio github, moverte 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

Viendo 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 los cambios en un directorio (por ejemplo, ~/bin ), ejecute el siguiente comando.

$ watchman watch ~/bin/

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

Puedes 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 por cambios. 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 monitorea.

Para propósitos de prueba, la secuencia de comandos pav.sh simplemente crea un archivo con una marca de hora (es decir, file..txt ) dentro del mismo directorio donde se encuentra guión se almacena.

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 ejecute watchman para controlar un directorio, se agrega a la lista de vigilancia y para verlo, ejecute el siguiente comando.

$ watchman watch-list 

Para ver la lista de desencadenantes para una raíz , ejecute el siguiente comando (reemplace ~/bin con el nombre de raíz ).

$ watchman trigger-list ~/bin

En función de la configuración anterior, cada vez que se modifica el directorio ~/bin , se crea un archivo como el archivo .2019-03-13.23: 14: 17.txt 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 de Watchman Github: https://github.com/facebook/watchman.

También te puede interesar leer los siguientes artículos 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

Watchman es un servicio de visualización de archivos de código abierto que vigila archivos y registros, o activa acciones cuando éstas cambian. Utilice el formulario de comentarios a continuación para hacer preguntas o compartir sus opiniones con nosotros.