2017-10-03 6 views
0

내 감시 프로그램이 pdfs를 쓰는 폴더를 확인하기 위해 감시 스크립트와 pdf 병합 스크립트의 직렬 연결을 설정하려고합니다. 첫 번째 스크립트의 개념은 두 개의 pdfs가 존재할 때까지 폴더를보고 두 번째 스크립트를 호출하는 것입니다. 이제 문제는 inotifywait가 파일이 만들어지고 예상대로 두 번째 스크립트가 호출되지만 특히 큰 pdf를 사용하면 pdf가 여전히 스캐너에 기록 될 수 있으므로 오류가 발생한다는 것입니다. inotifywait에 close_write 이벤트를 추가했지만 create 이벤트가 이미 true로 간주되어 무시됩니다. 임시 해결책으로 잠을 추가했지만 고정 된 시간 초과를 초과하는 더 큰 파일에서도 오류가 발생하는 것은 아닙니다. 두 파일이 모두 작성되었는지 확인하는 가장 좋은 방법은 무엇입니까? 고맙습니다.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