LINUX.ORG.RU

Как сделать выполнение ​​​inotify-tools с задержкой?

 


0

1

Всем доброго времени суток. С помощью этой статьи: 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 выполнять с небольшой задержкой, это бы исключило мою теорию. Всем заранее спасибо за помощь.


Ответ на: комментарий от anonymous

ну или лучше обрабатывать конкретно закрытие файла или как оно там у тебя при загрузке происходит

anonymous
()

Оставляй пустой файл-флажок когда загрузка закончилась. В скрипте(который в кроне) проверяй наличие флажка и по факту уже что-то делай.

S_Paul ★★★★★
()

Вот как кавычки заменять, так это они пожалуйста, а когда дело доходит до оформления постов, так всем насрать. Абсурд какой-то.

@maxcom, даже с кавычками-галочками этот пост выглядит плохо.

anonymous
()

Я бы весь этот срам бы выкинул, и написал бы по нормальному.

Один воркер слухач, он задания в очередь суёт, а рабочие из очереди берут.

Даже на том же пайтоне просто написать.

Задание в очередь с чексуммой файла. Ну и сам файл проверять identify каким-то из ImageMagick, и на то, что менялся или нет пока дошёл до воркера.

fornlr ★★★★★
()
Последнее исправление: fornlr (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.