fswatch: Monitorea cambios o modificaciones de archivos y directorios en Linux

fswatch es un monitor de cambios de archivos multiplataforma que recibe alertas de notificación cuando se alteran o modifican los contenidos de los archivos o directorios especificados.

Ejecuta cuatro tipos de monitores en diferentes sistemas operativos como:

  1. A monitor build on the File System Events API of Apple OS X.
  2. A monitor based on kqueue, a notification interface present in FreeBSD 4.1 also supported on many *BSD systems, OS X inclusive.
  3. A monitor based on File Events Notification API of the Solaris kernel plus its spin-offs.
  4. A monitor based on inotify, a kernel subsystem that shows file system modifications to apps.
  5. A monitor based on ReadDirectoryChangesW, a Windows API that records alters to a directory.
  6. A monitor that regularly check that status of file system, keeps file modification times in memory, and manually determine file system changes (which works anywhere, where stat can be used).

Características de fswatch

  1. Soporta varias API específicas del sistema operativo
  2. Permite monitoreo recursivo de directorios
  3. Realiza filtrado de ruta usando expresiones regulares de inclusión y exclusión
  4. Soporta formato de registro personalizable
  5. Además, soporta eventos de inactividad periódica

Cómo instalar fswatch en sistemas Linux

Desafortunadamente, el paquete fswatch no está disponible para instalar desde los repositorios del sistema por defecto en ninguna distribución de Linux. La única forma de instalar la última versión de fswatch es compilarla a partir del archivo fuente como se muestra en las siguientes instrucciones de instalación.

Primero, obtenga el último tarball de fswatch usando el siguiente comando wget e instálelo como se muestra:

$ wget https://github.com/emcrisostomo/fswatch/releases/download/1.9.3/fswatch-1.9.3.tar.gz
$ tar -xvzf fswatch-1.9.3.tar.gz
$ cd fswatch-1.9.3
$ ./configure
$ make
$ sudo make install 

Importante: Asegúrese de tener GNU GCC (Compilador de C y C++) y Herramientas de Desarrollo (build-essential en Debian/Ubuntu) instaladas en el sistema, antes de compilar fswatch desde el código fuente. Si no las tiene, instálelas usando el siguiente comando en sus respectivas distribuciones de Linux.

# yum group install 'Development Tools'		[On CentOS/RHEL]
# dnf group install 'Development Tools'		[On Fedora 22+ Versions]
$ sudo apt-get install build-essential          [On Debian/Ubuntu Versions]

En las distribuciones Debian/Ubuntu, es posible que obtengas el siguiente error al ejecutar el comando fswatch..

fswatch: error while loading shared libraries: libfswatch.so.6: cannot open shared object file: No such file or directory

Para solucionarlo, necesitas ejecutar el siguiente comando, esto ayudará a actualizar los enlaces y la caché de las bibliotecas dinámicas antes de poder comenzar a usar fswatch.

$ sudo ldconfig

¿Cómo uso fswatch en Linux?

La sintaxis general para ejecutar fswatch es:

$ fswatch [option] [path]

En Linux, se recomienda utilizar el monitor inotify por defecto, puedes listar los monitores disponibles empleando la opción -M o - list-monitors:

$ fswatch -M
$ fswatch --list-monitors
fswatch – List Monitors

El siguiente comando te permite observar los cambios en el directorio actual (/home/tecmint), con eventos entregados a la salida estándar cada 4 segundos.

La opción -l o –-latency te permite establecer la latencia en segundos, siendo el valor por defecto 1 segundo.

$ fswatch -l 4 . 

El siguiente comando monitorea los cambios en el archivo /var/log/auth.log cada 5 segundos:

$ fswatch -l 5 /var/log/auth.log

Usando la opción -t o --timestamp se imprime la marca de tiempo para cada evento, para imprimir la hora en formato UTC, emplea la opción -u o --utf-time. También puedes formatear la hora usando la opción -f o --format-time formato:

$ fswatch --timestamp /var/log/auth.log

Luego, -x o --event-flags indica a fswatch que imprima las banderas de evento junto con la ruta del evento. Puedes usar la opción –event-field-seperator para imprimir eventos usando el separador particular.

$ fswatch --events-flags ~ /var/log/auth.log

Para imprimir el valor numérico de un evento que indica cambios en tu directorio home y el archivo /var/log/auth.log, utiliza la opción -n o --numeric como se muestra a continuación:

$ fswatch --numeric ~ /var/log/auth.log 

Tal vez puedas revisar la página del manual de fswatch para obtener opciones de uso detalladas e información:

$ man fswatch

Para obtener más información y uso, visita el repositorio de Github de fswatch: https://github.com/emcrisostomo/fswatch

En esta publicación, cubrimos una utilidad de línea de comandos simple para ayudar a los usuarios de Linux a ser notificados cuando se modifiquen los contenidos de archivos o jerarquías de directorios especificados.

I hope all went well with the installation, if that is not the case for you, make an effort to reach us via the feedback form below. In addition, in case you have used it before, you may want to offer us some thoughts about your experience with fswatch.

Source:
https://www.tecmint.com/fswatch-monitors-files-and-directory-changes-modifications-in-linux/