bash脚本inotifywait在程序之前等待完全写入的文件

时间:2017-10-03 10:49:41

标签: bash pdf inotify

我正在尝试设置监视脚本和pdf合并脚本的串联来检查我的扫描程序将pdf写入的文件夹。第一个脚本的想法是观察文件夹,直到存在两个pdf,然后调用第二个脚本。 现在问题是inotifywait检测文件的创建时间和预期的时间,并调用第二个脚本,但特别是对于较大的pdf,这会导致失败,因为扫描程序仍可能写入pdf。我将close_write事件添加到inotifywait,但我认为这被忽略,因为create事件已经为真。我添加了一个睡眠作为解决方法,但这不仅是丑陋的,即使是超过固定超时的更大文件也会失败。什么是检查两个文件是否完全写入的最佳方法。谢谢。

Foldercheck脚本:

#! /bin/bash
n=0
inotifywait -m -e create,close_write $1 | while read line
do
    n=$(find $1 -type f | wc -l);
    echo $n
    if [ "$n" -eq "2" ] ; then 
      echo "found $n files"
      sleep 5
      ./pdfMergeMove.sh $1 cleanup
      n=0
    fi;
done 

1 个答案:

答案 0 :(得分:1)

正如pacholik close_write所指出的,仅作为事件选项就足够了:

inotifywait -m -e close_write $1 | while read line