0

ディレクトリで見つかったファイルをグループ化して電子メールで送信するスクリプトがあります。

ただし、スクリプトがCRONによってトリガーされることがあるため、スクリプトは起動しますが、ディレクトリに追加されるファイルがまだあるため、問題があります。

スクリプトの開始時に、ディレクトリ内のファイル数を取得し、それを記憶してから、たとえば 30 秒間再度チェックインするチェックを実装する必要があります。

数値が同じ場合は続行する必要があります。最後のチェックが最初のチェックよりも大きい場合は、スクリプトを完全に終了する必要があります。

そのようなチェックを行う最良の方法は何ですか?

4

3 に答える 3

1

別のアプローチは、ファイルを配置するプロセスに、実行の最後に特定の名前のファイル (例: all.done) を 1 つ作成させ、ファイルを消費するプロセスが他の処理を行う前にその特定のファイルをチェックし、存在しない場合は終了することです。 ...

于 2013-10-18T17:58:40.487 に答える
1

そうですか?

NFILES1=`find . -type f | wc -l`
sleep 30
NFILES2=`find . -type f | wc -l`
if [ $NFILES1 -ne $NFILES2 ]; then
    echo "The file-creator is still going, apparently; exiting."
    exit
fi
# carry on
于 2013-10-18T16:24:09.983 に答える
1

while ループを使用して、30 秒ごとにファイル数を確認できます。例えば:

a=-1
b=-2
while ((a!=b))
do 
    b=a
    a=$(find yourfolder -maxdepth 1 -mindepth 1 -type f -printf "a" | wc -c)
    sleep 30
done
于 2013-10-18T16:27:11.780 に答える