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:
- A monitor build on the File System Events API of Apple OS X.
- A monitor based on kqueue, a notification interface present in FreeBSD 4.1 also supported on many *BSD systems, OS X inclusive.
- A monitor based on File Events Notification API of the Solaris kernel plus its spin-offs.
- A monitor based on inotify, a kernel subsystem that shows file system modifications to apps.
- A monitor based on ReadDirectoryChangesW, a Windows API that records alters to a directory.
- 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
- Soporta varias API específicas del sistema operativo
- Permite monitoreo recursivo de directorios
- Realiza filtrado de ruta usando expresiones regulares de inclusión y exclusión
- Soporta formato de registro personalizable
- 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

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/