Debido a un problema en un servidor acabé teniendo que monitorizar los eventos de un sistema de ficheros ext3 para comprobar que ciertos ficheros estaban siendo escritos en el disco.
Para ello, busqué información relativa al tema y encontré dnotify.
Dnotify trabaja abriendo tantos descriptores de ficheros como directorios intentas monitorizar de esta forma monitoriza el cambio de estado de un directorio pero implica el tener algún método de monitorizar los cambios internos de los ficheros dentro del directorio.
Además implica problemas adicionales al no poder desmontar las unidades monitorizadas ya que se encuentran secuestradas por el descriptor del fichero.
Otro de sus inconvenientes se destapa al tratar de monitorizar una gran cantidad de archivos. En estos casos es probable llegar al limite máximo de descriptores de ficheros permitidos en el equipo, produciendo un comportamiento errático del mismo.
Por fortuna, encontré inotify, una herramienta de monitorización de cambios en ficheros o directorios basado en inodos.
Además de las librerías de inotify, podemos encontrar inotify-tools e inoticoming. Ambas son herramientas muy útiles que nos permiten lanzar acciones según los cambios de estado del fichero o directorio monitorizado.
Vale la pena darles una buena ojeada ya que su uso puede resultar muy provechoso.
Uno de los ejemplos más graciosos es realizar tail -f mediante el uso de la librería inotify, por lo que no se realizaran pulls frecuentes para monitorizar el estado, simplemente se recibirá el evento en el momento del cambio, ahorrando tiempo de proceso y de i/o.
Para acabar, sólo aclarar que para poder usar inotify el kernel debe de poder soportarlo. Prácticamente viene siempre de serie con la rama del kernel 2.6.
Para ello, busqué información relativa al tema y encontré dnotify.
Dnotify trabaja abriendo tantos descriptores de ficheros como directorios intentas monitorizar de esta forma monitoriza el cambio de estado de un directorio pero implica el tener algún método de monitorizar los cambios internos de los ficheros dentro del directorio.
Además implica problemas adicionales al no poder desmontar las unidades monitorizadas ya que se encuentran secuestradas por el descriptor del fichero.
Otro de sus inconvenientes se destapa al tratar de monitorizar una gran cantidad de archivos. En estos casos es probable llegar al limite máximo de descriptores de ficheros permitidos en el equipo, produciendo un comportamiento errático del mismo.
Por fortuna, encontré inotify, una herramienta de monitorización de cambios en ficheros o directorios basado en inodos.
Además de las librerías de inotify, podemos encontrar inotify-tools e inoticoming. Ambas son herramientas muy útiles que nos permiten lanzar acciones según los cambios de estado del fichero o directorio monitorizado.
Vale la pena darles una buena ojeada ya que su uso puede resultar muy provechoso.
Uno de los ejemplos más graciosos es realizar tail -f mediante el uso de la librería inotify, por lo que no se realizaran pulls frecuentes para monitorizar el estado, simplemente se recibirá el evento en el momento del cambio, ahorrando tiempo de proceso y de i/o.
Para acabar, sólo aclarar que para poder usar inotify el kernel debe de poder soportarlo. Prácticamente viene siempre de serie con la rama del kernel 2.6.
Comments