Puede que se de el caso de que encuentres algún problema con tu código o trabajo, recuerda probar siempre en un entorno de testing antes aplicar el código al trabajo final.
Solución:
notificaresperar (parte de inotify-tools) es la herramienta adecuada para lograr su objetivo, no importa que se estén creando varios archivos al mismo tiempo, los detectará.
Aquí un guión de muestra:
#!/bin/sh
MONITORDIR="/path/to/the/dir/to/monitor/"
inotifywait -m -r -e create --format '%w%f' "$MONITORDIR" | while read NEWFILE
do
echo "This is the body of your mail" | mailx -s "File $NEWFILE has been created" "[email protected]"
done
notificaresperar utilizará estas opciones.
-metro para monitorear el directorio indefinidamente, si no usa esta opción, una vez que haya detectado un nuevo archivo, el script finalizará.
-r monitoreará los archivos de forma recursiva (si hay muchos directorios/archivos, podría llevar un tiempo detectar los nuevos archivos creados)
-e crear es la opción para especificar el evento a monitorear y en su caso debería ser crear cuidar los archivos nuevos
–formato ‘%w%f’ imprimirá el archivo en el formato /completo/ruta/archivo.nombre
“$MONITORDIR” es la variable que contiene la ruta a monitor que hemos definido anteriormente.
Entonces, en el caso de que se cree un nuevo archivo, inotifywait lo detectará e imprimirá la salida (/completar/ruta/archivo.nombre) a la pipa y mientras asigne esa salida a la variable NEWFILE.
Dentro del bucle while verás una forma de enviar un correo a tu dirección usando el utilidad mailx eso debería funcionar bien con su MTA local (en su caso, Postfix).
Si desea monitorear varios directorios, inotifywait no lo permite, pero tiene dos opciones, crear un script para cada directorio a monitorear o crear una función dentro del script, algo como esto:
#!/bin/sh
MONITORDIR1="/path/to/the/dir/to/monitor1/"
MONITORDIR2="/path/to/the/dir/to/monitor2/"
MONITORDIRX="/path/to/the/dir/to/monitorx/"
monitor() mailx -s "File $NEWFILE has been created" "[email protected]"
done
monitor "$MONITORDIR1" &
monitor "$MONITORDIR2" &
monitor "$MONITORDIRX" &
Utilice inotifywait, por ejemplo:
inotifywait -m /path -e create -e moved_to |
while read path action file; do
echo "The file '$file' appeared in directory '$path' via '$action'"
# do something with the file
done
Para más información y ejemplos ver el artículo
Cómo usar inotify-tools para activar scripts en eventos del sistema de archivos.
Te mostramos las reseñas y valoraciones de los usuarios
Al final de la artículo puedes encontrar las interpretaciones de otros desarrolladores, tú todavía puedes insertar el tuyo si lo crees conveniente.