2

有一个目录树,由inotifywait. 我想做的是触发一个延迟(例如10秒)的脚本(例如,我可以从中移动文件),所以这个脚本不会在任何事件中触发,而是在“分组”事件中触发。

批处理脚本(它是更大脚本的一部分,最后发送电子邮件等)将文件移动到另一个目录的相应目录manage_all.sh

#!/bin/bash
TEMPDIR="/mnt/foo/temp"
QUEUEDIR="/mnt/foo/queue"
SLOTSLEFTINQUEUE=5

for FILEPATH in $(ls -1tr $(find "$TEMPDIR" -type f -iname \*.txt) | head -n$SLOTSLEFTINQUEUE) ; do 
   FILESUBPATH="${FILEPATH#$TEMPDIR/}"
   mv -f "$FILEPATH" "$QUEUEDIR/$FILESUBPATH"
done

现在每 5 分钟在 cron 中运行一次,并且运行良好。但我想使用inotifywait,而不是再等 5 分钟。我已经尝试过了,但这并不好,因为它会触发manage_all.sh每个事件的脚本:

(echo start; inotifywait -mr -e close_write,moved_to,modify "/mnt/foo/temp") | while read line; do ./manage_all.sh; done

是否有可能(不重写脚本)“将事件组合在一起”,每 10 秒只启动一次脚本?

谢谢

4

0 回答 0