1

StackOverflowに関する他の多くの質問があります。結果がサードパーティのパッケージを使用していない場所は見つかりませんでした。

問題は、私がHetznerを使用していて、パッケージのインストールを許可してほしいということです。

PHP、Python、Javaを使用できます(ほとんど標準のコレクションだと思います)

ディレクトリ(再帰的)で新しいファイルを監視し、参照を別のファイルに取得する方法。

私はこのようなことを試しました:

while true; do
    last=`cat log.txt`
    find "$UPLOAD_FOLDER"'/.' -type f > 'log.txt'
    now=`cat log.txt`

    diff -n <(echo "$last") <(echo "$now") >> 'queue.txt'

    sleep 60;
done;

しかし、それは信頼性が低く、、などで汚染さqueue.txtれます。d3ab5a

4

2 に答える 2

1

おそらく最も簡単なのは、マーカーファイルを使用することです。

touch markerFile
while true
do
    find "$UPLOAD_FOLDER"'/.' -type f -newer markerFile >> 'queue.txt'
    touch markerFile
    sleep 60
done

検索とタッチの間のわずかな競合状態である可能性がありますか?

コメントで提案されている、より複雑なダブルバッファリングソリューション:

touch markerFileA
touch markerFileB
while true
do
    touch markerFileB
    find "$UPLOAD_FOLDER"'/.' -type f -newer markerFileA ! -newer markerFileB >> 'queue.txt'
    sleep 60
    touch markerFileA
    find "$UPLOAD_FOLDER"'/.' -type f -newer markerFileB ! -newer markerFileA >> 'queue.txt'
    sleep 60
done
于 2013-01-04T17:14:24.397 に答える
0

sed不要な出力を削除するために使用できます。

while :; do

    find "$UPLOAD_FOLDER/." -type f > "log1.txt"

    if [ -f "log2.txt" ]; then
        diff log1.txt log2.txt | sed '/^[^<]/d;s/^< //'

        fi

    mv "log1.txt" "log2.txt"

    sleep 60

done
于 2013-01-04T16:54:38.383 に答える