Как сделать выполнение inotify-tools с задержкой?
-
Всем доброго времени суток. С помощью этой статьи: https://www.8host.com/blog/sozdanie-i-ispolzovanie-izobrazhenij-webp-dlya-uskoreniya-sajta/ (https://www.8host.com/blog/sozdanie-i-ispolzovanie-izobrazhenij-webp-dlya-uskoreniya-sajta/)
Я конвертирую свои изображения на сайте в формат .webp. Есть два скрипта которые выполняются по крону:bash /webp-convert.sh /home/admin/web/ 5 2 * * *
#!/bin/bash # converting JPEG images find $1 -type f -and \( -iname "*.jpg" -o -iname "*.jpeg" -o -iname "*.JPG" -o -iname "*.JPEG" \) \ -exec bash -c ' webp_path=$(sed 's/\.[^.]*$/.webp/' <<< "$0"); if [ ! -f "$webp_path" ]; then cwebp -quiet -q 90 "$0" -o "$webp_path"; fi;' {} \; # converting PNG images find $1 -type f -and \( -iname "*.png" -o -iname "*.PNG" \) \ -exec bash -c ' webp_path=$(sed 's/\.[^.]*$/.webp/' <<< "$0"); if [ ! -f "$webp_path" ]; then cwebp -quiet -lossless "$0" -o "$webp_path"; fi;' {} \;
bash /webp-watchers.sh /home/admin/web/ 5 3 * * *
#!/bin/bash echo "Настройка часов."; # watch for any created, moved, or deleted image files inotifywait -q -m -r --format '%e %w%f' -e close_write -e moved_from -e moved_to -e delete $1 \ | grep -i -E '\.(jpe?g|png)$' --line-buffered \ | while read operation path; do webp_path="$(sed 's/\.[^.]*$/.webp/' <<< "$path")"; if [ $operation = "MOVED_FROM" ] || [ $operation = "DELETE" ]; then # если файл перемещен или удален if [ -f "$webp_path" ]; then $(rm -f "$webp_path"); fi; elif [ $operation = "CLOSE_WRITE,CLOSE" ] || [ $operation = "MOVED_TO" ]; then # если создается новый файл if [ $(grep -i '\.png$' <<< "$path") ]; then $(cwebp -quiet -lossless "$path" -o "$webp_path"); else $(cwebp -quiet -q 90 "$path" -o "$webp_path"); fi; fi; done;
Все хорошо работает, но есть одна проблема. Иногда бывает что при загрузки пользователем изображения копия .webp создается битой. Я предполагаю что конвертация происходит до того как изображение полностью загружено, возможно это не так.
Мой вопрос, в чем может быть проблема, и для тестирования, как заставить inotify-tools выполнять с небольшой задержкой, это бы исключило мою теорию. Всем заранее спасибо за помощь.