Linux en español
Tutoriales

Monitorear archivos y carpetas en tu Linux con incron && incrontab

incron

Incron es una potente herramienta para monitorear la actividad del sistema de archivos. Consiste en un demonio y un manipulador de tablas. Se usa de manera similar a la del cron. La diferencia principal es que «inotify cron» (corresponde con las dos primeras letras de incron) maneja eventos del sistema de archivos en lugar de periodos de tiempo como lo hace cron.

Incron proporciona una forma sencilla de cómo resolver muchas situaciones diferentes sobre todo cuando algo depende de los eventos del sistema de archivos.

Aquí puede ver algunos ejemplos en los que incron es una buena solución:

  •     Notificación a los programas (por ejemplo, demonios del servidor) sobre cambios en la configuración.
  •     Guardando cambios en archivos críticos (con su eventual recuperación).
  •     Monitoreo de uso de archivos, estadísticas.

INSTALACION

ARCHIVOS DE CONFIGURACION

  • /etc/incron.conf: archivo de configuración principal de incron
  • /etc/incron.d/: en esta carpeta se examina por incrementos de los archivos de la tabla del sistema. Debe colocar todo el archivo de configuración aquí según el directorio o los nombres de dominio.
  • /etc/incron.allow: este archivo contiene usuarios autorizados para usar incron.
  • /etc/incron.deny: este archivo contiene usuarios que no pueden utilizar incron.
  • /var/spool/incron: este directorio se examina en incrementos para los archivos de la tabla de usuarios que establecen los usuarios que ejecutan el comando incrontab.

USO DE INCRON

Antes que nada debemos activar el servicio. Para systemd, vamos a habilitarlo e iniciarlo, es tan simple como:

Ahora debemos habilitar a los usuarios que podrán utilizar incron, para ello vamos a editar uno de los archivos de configuración:

Donde agregaremos los usuarios que podrán hacer uso de la herramienta, si son más de uno van uno debajo del otro, solo el nombre de usuario.

SINTAXIS

La sintaxis de las reglas de incron es similar a las de cron, si viste la publicación de uso de cron y crontab vas a ver que es similar, y si no nos seguís podes sumarte a cualquier de nuestras redes sociales.

Carpetas_o_archivo_a_monitorear   Eventos   Acción

Donde:

  • Carpetas_o_archivo_a_monitorear: archivos o carpetas que se van a monitorizar los cambios.
  • Eventos: los cambios a monitorizar en los objetivos son:
    • IN_ACCESS: Vigila si el archivo es accedido.
    • IN_MODIFY: Vigila si el archivo es modificado.
    • IN_ATTRIB: Vigila los cambios en los metadatos (permisos, atributos, fechas, …)
    • IN_CLOSE_WRITE: Cerrado un fichero de lectura/escritura.
    • IN_CLOSE_NOWRITE: Cerrado un archivo de sólo lectura.
    • IN_OPEN: Archivo abierto.
    • IN_MOVED_FROM: Se ha movido el fichero fuera del directorio vigilado.
    • IN_MOVED_TO: Se ha movido el fichero dentro del directorio vigilado.
    • IN_CREATE: Nuevo fichero/directorio creado dentro del directorio vigilado.
    • IN_DELETE: Fichero/directorio eliminado del directorio vigilado.
    • IN_DELETE_SELF: Supervisa si se elimina el directorio vigilado.
    • IN_CLOSE: Superivsa los eventos IN_CLOSE_WRITE e IN_CLOSE_NOWRITE
    • IN_MOVE: Supervisa los eventos IN_MOVED_FROM e IN_MOVED_TO
    • IN_ALL_EVENTS: Supervisa todos los eventos listados.
    • IN_DONT_FOLLOW: No sigue enlaces simbólicos.
    • IN_ONLYDIR: Supervisa el path únicamente si es un directorio.
    • IN_MOVE_SELF: Supervisa el borrado del fichero/directorio.
  • Acción: Órden o script que se ejecutará cuando se cumplan las condiciones de notificación. Se pueden usar las siguientes variables:
    • $$: signo del dolar.
    • [email protected]: ruta al directorio contenedor
    • $#: archivo o directorio observado sin su ruta
    • $%: evento que provoca la notificación
    • $&: número del evento que se ejecutó

PARAMETROS

  • incrontab -l : Muestra las reglas que tenemos definidas.
  • incrontab -r : Borra la tabla de reglas por completo. (Cuidado, que no pide confirmación.)
  • incrontab -d : Recarga la tabla de reglas. Esto será necesario cada vez que modifiquemos las reglas o creemos nuevas.
  • incrontab -e: Abrirá nuestro editor de texto predeterminado para crear las nueva reglas.

EJEMPLO

Vamos a ver paso a paso como monitorear la carpeta /home/nksistemas/nk, lo primero que hacemos el crear una regla

Agregamos los parámetros para monitorear la carpeta completa

Ahora recargamos la tabla de reglas para que comience a operar

A continuación creamos un archivos y carpetas para probar, también eliminamos cosas

El comando echo manda la salida al log del sistema, por lo tanto hacemos para ver los registros hacemos:

Combinando incron con cron, podemos lograr monitorear carpetas o archivos en un determinado intervalo de tiempo y sin duda será una gran ayuda para todo sysadmin.

Entradas relaccionadas

Proteger un directorio apache con contraseña

Diego García Cuesta

Failed to start startup script for nginx service in plesk

Linux en Español

Cómo configurar FastCGI Caching en Nginx

Diego García Cuesta

Cómo implementar el modulo PageSpeed en Nginx

Diego García Cuesta

Cómo cambiar el fondo de la pantalla de inicio de sesión de GDM en Ubuntu

Linux en Español

Actualizar solo un paquete determinado en Debian con apt

Diego García Cuesta