Fswatch es una utilidad de monitoreo de cambio de archivos multiplataforma de código abierto y gratuita que nos notifica cuando se modifica o cambia el contenido de los archivos o directorios especificados. Usando fswatch, podemos monitorear fácilmente los cambios que se realizan en archivos y/o directorios. Es compatible con todos los sistemas operativos, incluidos GNU/Linux, *BSD, Mac OS X, Solaris y Microsoft Windows, etc. En esta breve guía, permítame mostrarle cómo monitorear los cambios de archivos usando fswatch en sistemas operativos similares a Unix.
Tipos de seguimiento
fswatch implementa los siguientes tipos de monitores.
- Un monitor basado en la API de eventos del sistema de archivos de Apple OS X.
- Un monitor basado en kqueue, una interfaz de notificación introducida en FreeBSD 4.1.
- Un monitor basado en la API de notificación de eventos de archivo del kernel de Solaris y sus derivados.
- Un monitor basado en inotify, un subsistema del kernel de Linux que informa los cambios del sistema de archivos a las aplicaciones.
- Un monitor basado en ReadDirectoryChangesW, una API de Microsoft Windows que informa cambios en un directorio.
- Un monitor que genera estadísticas periódicas del sistema de archivos, guarda los tiempos de modificación de archivos en la memoria y calcula manualmente los cambios en el sistema de archivos.
Características
En cuanto a las características, podemos enumerar las siguientes:
- Utilidad multiplataforma y de código abierto.
- Compatibilidad con muchas API específicas del sistema operativo.
- Supervisión recursiva de directorios.
- Filtrado de rutas mediante la inclusión y exclusión de expresiones regulares.
- Formato de registro personalizable.
- Soporte para eventos inactivos periódicos.
- Y muchos.
Supervise los cambios de archivos usando fswatch en Linux
Dado que la utilidad fswatch no está disponible en los repositorios predeterminados de la mayoría de las distribuciones de Linux, debe compilar e instalar manualmente la última versión de la fuente como se describe a continuación.
Antes de compilar, debe instalar las herramientas de desarrollo en su distribución de Linux. Para instalar herramientas de desarrollo en varias distribuciones de Linux, consulte la siguiente guía.
- Cómo instalar herramientas de desarrollo en Linux
Luego, descargue el archivo fuente de fswatch desde aquí .
$ wget https://github.com/emcrisostomo/fswatch/releases/download/1.9.3/fswatch-1.9.3.tar.gz
Extraiga el tarball descargado:
$ tar -zxvf fswatch-1.9.3.tar.gz
Vaya a la carpeta del proyecto:
$ cd fswatch-1.9.3/
Finalmente, compile e instale fswatch ejecutando los siguientes comandos uno por uno.
$ ./configure
$ make
$ sudo make install
Finalmente, ejecute el siguiente comando para actualizar los enlaces y el caché a las bibliotecas dinámicas:
$ sudo ldconfig
Si no ejecuta el comando anterior, es posible que obtenga el siguiente error en los sistemas GNU/Linux.
fswatch: error while loading shared libraries: libfswatch.so.6: cannot open shared object file: No such file or directory
uso de fswatch
El uso de fswatch no es gran cosa. La sintaxis típica de fswatch es:
$ fswatch [options] ... path-0 ... path-n
Para probar cómo funciona fswatch, abra dos ventanas de Terminal (Llamémoslas Terminal 1 y Terminal 2 ).
En la Terminal 1, ejecute el comando fswatch para monitorear el directorio $HOME.
$ fswatch /home/sk/
Y, en la Terminal 2, realice algunas operaciones, como crear archivos/carpetas, eliminar archivos, modificar archivos, etc.
Hagas lo que hagas en la terminal 2 se notificará en la terminal 1. Echa un vistazo a las siguientes capturas de pantalla.
Supervise los cambios de archivos mediante fswatch
De forma predeterminada, fswatch elegirá el mejor monitor disponible en la plataforma actual, en términos de rendimiento y consumo de recursos. En Linux, el monitor predeterminado es inotify .
Para enumerar los monitores disponibles en la plataforma actual (es decir, Linux en nuestro caso), ejecute:
$ fswatch -M
O,
$ fswatch --list-monitors
Salida de muestra:
inotify_monitor poll_monitor
Para monitorear un archivo o directorio específico con una opción de monitoreo particular, ejecute:
$ swatch -m kqueue_monitor /home/sk/
De forma predeterminada, fswatch seguirá supervisando los cambios en el archivo hasta que lo detenga manualmente invocando CTRL+C. llaves.
También puede salir de fswatch después de recibir el primer conjunto de eventos especificando la opción -1 como se muestra en el siguiente comando:
$ fswatch -1 /home/sk/
Este comando saldrá justo después de que se reciba el primer conjunto de eventos.
fswatch monitoreará los cambios en todos los archivos/carpetas en la ruta especificada. Si desea ver los cambios realizados solo en los directorios, use -d opción.
$ fswatch -d /home/sk/
Por supuesto, hay más opciones. Consulte las páginas man o la página de documentación del proyecto para obtener instrucciones detalladas.
$ man fswatch