Monitorear el directorio para cambios

Al igual que una pregunta similar de SO , estoy tratando de controlar un directorio en una caja de Linux para la adición de nuevos archivos y me gustaría procesar inmediatamente estos nuevos archivos cuando lleguen. ¿Alguna idea sobre la mejor manera de implementar esto?

Mira inotify .

Con inotify puede ver un directorio para la creación de archivos.

Primero asegúrate de que inotify-tools esté instalado.

Entonces úsalos así:

 logOfChanges="/tmp/changes.log.csv" # Set your file name here. # Lock and load inotifywait -mrcq $DIR > "$logOfChanges" & IN_PID=$$ # Do your stuff here ... # Kill and analyze kill $IN_PID while read entry; do # Split your CSV, but beware that file names may contain spaces too. # Just look up how to parse CSV with bash. :) path=... event=... ... # Other stuff like time stamps? # Depending on the event… case "$event" in SOME_EVENT) myHandlingCode path ;; ... *) myDefaultHandlingCode path ;; done < "$logOfChanges" 

Alternativamente, usar --format lugar de -c en inotifywait sería una idea.

Simplemente el man inotifywait y el man inotifywatch para obtener más información.

También puede usar incron y usarlo para llamar a un script de manejo.

Una solución en la que pensé es crear un “detector de archivos” junto con un trabajo cron. No estoy loco por esto, pero creo que podría funcionar.

fschange (Notificación de cambio de sistema de archivos de Linux) es una solución perfecta, pero necesita parchear su kernel