cómo poner un disparador en un directorio

25

Tengo un script que escanea un directorio y realiza algunos trabajos de mantenimiento en los archivos que contiene. Otro proceso crea los archivos en el directorio (10-30 archivos por día).

El script se llama a través de un trabajo cron diario. Lo que necesito es activar el script en un evento (cada vez que se crea un nuevo archivo en el directorio). Prefiero esto en lugar de aumentar la frecuencia del trabajo cron.

¿Cómo puedo hacer eso? ¿Hay un comando o un programa para instalar?

Gracias de antemano por cualquier ayuda.

Albert Green
fuente

Respuestas:

23

inoticoming

inoticoming es un demonio para mirar un directorio con el marco de inotify de Linux y activar acciones una vez que los archivos con nombres específicos se colocan allí.

Por ejemplo, se puede usar para esperar archivos .changes cargados en un directorio y llamar a reprepro para ponerlos en su repositorio.

incron

incron es un sistema "inotify cron". Funciona como el cron normal, pero está controlado por eventos del sistema de archivos en lugar de eventos de tiempo. Este paquete proporciona dos programas, un demonio llamado "incrond" (análogo a crond) y un manipulador de tabla "incrontab" (como "crontab").

incron utiliza las llamadas al sistema inotify del kernel de Linux.

Como cron, cada usuario puede editar sus propias tablas de incron.

Florian Diesch
fuente
2
Podría dar un ejemplo? Enlaces a páginas de manual también son bienvenidos, no pude encontrar el uno para incronel inoticominguno es aquí .
Lekensteyn
Para obtener información sobre incron, consulte las páginas de manual de incrond, incrontab e incron.conf
Florian Diesch
2
He editado tu respuesta de una manera que quería verla. Lo copié de las descripciones de los paquetes, sea tan extenso en el futuro al nombrar programas :)
Lekensteyn
4

También hay un pequeño programa llamado iwatch: vea la página de manual (esta página es para Ubuntu precisa (12.04), tiene enlaces a otras versiones de ubuntu).

iwatch tiene la capacidad de ver las carpetas de forma recursiva (es decir: subcarpetas también) y enviar correos electrónicos en respuesta a eventos de archivo / directorio.

drevicko
fuente
3

Otra utilidad que vale la pena saber es fileschanged( página del manual aquí ), que puede monitorear eventos del sistema de archivos en archivos o directorios seleccionados, por ejemplo, el siguiente comando

fileschanged -s created -t1 $PWD

debe monitorear el directorio actual para detectar eventos de creación de archivos, escribiendo el nombre del archivo creado stdoutcon un tiempo de espera de 1 segundo.

fileschangedpuede ver carpetas de forma recursiva (como se puede iwatchobservar en otra respuesta), a diferencia de incrony inoticoming.

enzotib
fuente
2

la página del manual de inotify se encuentra allí

si prefieres scripts de python, puedes usar pyinotify

Pascal
fuente