Este post surge a raíz de un post vertido en Linkedin en la que se habla de cómo crear un demonio para el control de los ficheros de un directorio, así que lo dejo aquí plasmado para la posteridad. En realidad, el post acaba dejando de lado la idea de escribir un demonio para esto, y hace un script en Bash cuyo bucle while ni siquiera tiene un sleep o algo para parar la contínua avalancha en ejecución que esto puede suponer para la pobre CPU que se tope con él. ¿Hay un modo más eficiente de hacer esto? Como no habría post sin afirmación, la respuesta es sí. Y viene de mano de los "filesystem event monitors" (monitorizadores de eventos del sistema de ficheros). Inotify, que es una API para GNU/Linux que proporciona un mecanismo para esto, es uno de ellos. Como podemos ver en un artículo de IBM, es la evolución de dnotify. Vamos a usarlo. Pasos:
#!/usr/bin/python import os import inotifyx fd = inotifyx.init() try: wd = inotifyx.add_watch(fd, '/home/usuario', inotifyx.IN_ALL_EVENTS) events = inotifyx.get_events(fd) print '' print 'events: ' + `events` print '--------------------' for event in events: print 'event.mask: ' + `event.mask` print 'event.get_mask_description(): ' + event.get_mask_description() print '--------------------' inotifyx.rm_watch(fd, wd) finally: os.close(fd) Para la monitorización contínua, sólo quedaría ponerla en un bucle para que no se parara al primer evento detectado y listos. ¿A alguien se le ocurre una idea mejor? Comentarios (0) |