ファイルの変更を監視するシェル スクリプトを書きたいと思います。つまり、私が書いた別のプログラムは、ファイルの状態に応じて 1 または 0 をファイルに書き込みます。無期限に実行され、このファイルの状態を監視するスクリプトを作成したいと考えています。これまでのところ、tail -f を使用してオンラインで近い解決策を見つけました。ただし、このコマンドは、ファイルが継続的に追加されることを想定しています。次のコードを実行すると、tail: test.log: file truncated
. echo 1 > test.log
また、このプログラムを別の端末で実行してテストecho 0 > test.log
すると、定期的にファイルの変更が完全に失われるようです。おそらく、単一の文字を変更するだけでなく、ファイルが追加されているときにファイルをたどることを期待しているテールに関連しています(したがって、ファイルが切り捨てられたと思います)。
私が試したコードは次のとおりです。
#!/bin/sh
# Monitor changes in file
tail -fn0 test.log | \
while read line; do
if [ $line = 1 ]; then
echo "TRUE!!!"
elif [ $line = 0 ]; then
echo "FALSE!!!"
fi
done
解決策はおそらく信じられないほど簡単ですが、私はそれを見つけることができません。