需要帮助 inotifywait 循环仅处理一个文件

需要帮助 inotifywait 循环仅处理一个文件

我已经创建了一个运行 inotifywait 命令的 shell 脚本。

它监视文件夹中是否有新图像上传(来自网站),然后使用 Imagemagick 调整其大小,将其移动到另一个目录,然后向远程 wordpress 安装发送命令以导入图像。

它看起来像这样(我已将其创建为服务,因此它在启动时运行)

#!/bin/bash

TARGET=/var/www/img/uploads
PROCESSED=/var/www/img/processed
DONE=/var/www/img/finished
URL=https://--censored--

inotifywait -m -r -e create -e moved_to --format "%f" $TARGET \
        | while read FILENAME
                do
                        echo Detected $FILENAME, moving and resizing
                        mv "$TARGET/$FILENAME" "$PROCESSED/$FILENAME"
                        convert -verbose -debug coder -log %e "$PROCESSED/$FILENAME" -resize 600x600 -background white -gravity center -extent 600x600 "$DONE/$FILENAME"
                        wp @mm media import "$URL/$FILENAME" --path=--censored--
                        echo Finished processing $FILENAME.
                done

代码可以运行,但如果我上传多个文件,它只会上传第一个文件。如果我删除 Wordpress 部分,它似乎会处理所有文件。

但我不确定我错在哪里。

答案1

最终将脚本分为两个独立的进程,一个用于转换,一个用于上传。在进程脚本中设置完成前的“睡眠”似乎足以让下一个事件发生。谢谢您的回答。

相关内容