誰かが指摘したように、ファイル変更時間を使用すると便利な場合があります。役に立つかもしれないこのスクリプトをすぐに実行しました。特定のファイルの最終変更時刻から 5 秒が経過するまで待機します。
#!/bin/bash
function getTimeFromLastChange() {
file=${1}
let lastAccess=$(stat --format=%Y ${file})
let now=$(date +%s)
let timePassed=$((now - lastAccess))
echo ${timePassed}
}
file=./test
while [ true ]; do
let lastChange=$(getTimeFromLastChange ${file})
if [ "${lastChange}" -lt 5 ]; then
echo "waiting"
sleep 1
else
echo "done"
exit
fi
done
echo ${timePassed}
ここで重要なのは、stat (http://linux.die.net/man/1/stat) を使用して、指定されたファイルの最終変更時刻を UNIX エポック時間からの秒数で取得する「getTimeFromLastChange」関数です。次に、日付 (http://linux.die.net/man/1/date) を使用して現在の時刻を取得し (ここでも、UNIX エポック時刻からの秒数)、それらを減算し、それ以降の合計秒数を計算します。最終変更時刻。
メインループは、「安全な」秒数が経過するまで待機します。したがって、このパラメーターを調整して、数 N 秒前に書き込まれた/変更されたファイルを出力することができます。
サンプル実行:
marcelog@host ~ $ touch ./test
marcelog@host ~ $ ./try.sh
waiting
waiting
waiting
done
100%安全ではありません。でもやってみる価値はあると思います。
それが役に立てば幸い!