GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo monitorear cambios de archivos usando fswatch en Linux

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.

Terminal 1 - El comando fswatch se está ejecutando y se están monitoreando los cambios del archivo:

Supervise los cambios de archivos mediante fswatch

Terminal 2 - Haz algunos cambios aleatorios en archivos/carpetas:

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

Linux
  1. Cómo monitorear la actividad de Ethernet en Linux usando Arpwatch

  2. Cómo dividir iso o archivo usando el comando 'dividir' en Linux

  3. Cómo crear archivos dispersos en Linux usando el comando 'dd'

  4. ¿Cómo adjuntar un archivo usando el comando de correo en Linux?

  5. ¿Cómo puedo monitorear datos en un puerto serie en Linux?

Cómo monitorear servidores Linux usando CloudStats

Cómo crear un enlace simbólico en Linux usando el comando Ln

Cómo monitorear el tiempo de actividad del sistema Linux usando Uptimed

Cómo bloquear un archivo de texto en Linux usando el comando flock

Cómo vincular un archivo en Linux

Cómo descargar archivos usando Wget a través de Proxy en Linux