2017-10-03 7 views
0

私は、スキャナがpdfsを書いているフォルダをチェックするための監視スクリプトとpdfマージスクリプトのタンデムを設定しようとしています。最初のスクリプトのアイデアは、2つのpdfsが存在してから2番目のスクリプトを呼び出すまでフォルダを監視することです。 問題は、inotifywaitがファイルが作成され、期待通りに検出され、2番目のスクリプトが呼び出されますが、特にpdfが大きいと、スキャナによってpdfが書き込まれる可能性があるためです。私はinotifywaitにclose_writeイベントを追加しましたが、createイベントが既に真であるので、これは無視されると仮定します。私は回避策として睡眠を追加しましたが、これは醜いだけでなく、固定されたタイムアウトを超えるさらに大きなファイルでも失敗します。両方のファイルが完全に書き込まれているかどうかを確認する最良の方法は何でしょうか。ありがとうございました。bashスクリプトinotifywaitは、実行前に完全に書かれたファイルを待ちます

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

は 'close_write'を試してみてください。 – pacholik

+0

それはトリックをしました - ありがとう – Mike

答えて

0

として単独イベントオプションとしてpacholik close_writeによって指摘は十分です:

inotifywait -m -e close_write $1 | while read line 
関連する問題