web-dev-qa-db-ja.com

tail-fはファイルの変更を追跡しません

最近、tail -fを使用して次のようなテキストファイルを監視することを検討していました:tail -f /var/sometext

しかし、私がいくつかのテストを行ったとき、それはうまくいかないようです。私がしたことは、新しいファイルを作成して実行したことです:tail -f /home/name/text次に、vimでログを開き、編集を行って保存しましたが、tailが変更を「認識」していないようです。

奇妙なことに、echo "hello" >> /home/name/textの実行は正常に機能しているようです(テールは変更を確認します)。私はどこかでこれがファイル記述子とファイルを保存するときに作成される新しいiノードと関係があることを読みました。

誰かが私のためにこれを説明できますか?これが実際にどのように機能するかはよくわかりませんでしたが、ファイル記述子が何であるかはわかりました。

15
Vince Tar

-fの後にiノードが続きます。プログラムがファイルを完全に再作成する場合など、名前でフォローする場合は、代わりに-Fを使用します。

tail -fはファイルの終わりを監視し、ファイルの終わりが移動すると、新しいコンテンツを出力し、ファイルの終わりが再び移動するのを待ちます。つまり、ドキュメントの途中での変更は、tail -fでは検出されず、追加するだけです。

1
dj_segfault