0

ファイルの変更を監視するシェル スクリプトを書きたいと思います。つまり、私が書いた別のプログラムは、ファイルの状態に応じて 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

解決策はおそらく信じられないほど簡単ですが、私はそれを見つけることができません。

4

1 に答える 1