ファイルの変更を追跡しないtail -f


14

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

ただし、いくつかのテストを行ったとき、機能していないようです。私がやったのは、新しいファイルを作成して実行したことです。tail -f /home/name/textそれから、vimでログを開いて編集し、保存しました。

奇妙なことに、ランニングecho "hello" >> /home/name/textはうまく機能しているように見えます(テールは変更を確認します)。これは、ファイルを保存するときにファイル記述子と新しいiノードが作成されることと関係があるところを読んでいます。

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

回答:


29

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


きちんとした、私はそれを知らなかった。ユーティリティを常に使用している場合でも、ユーティリティのマンページを読むことは(特に?)
ライル

1

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


-1

実際、実話は次のとおりです。

tail -fは、ディスクではなくメモリを監視します。ただし、テキストエディターで開いたファイルの編集など、保護されたメモリにはアクセスできません。


tail -fコマンドは、ファイル(ファイルを開いた後、ファイルディスクリプタ)上で動作します。実際、ファイルの新しい変更はまだメモリ(バッファ、キャッシュ)にありますが、重要ではありません。tailファイル記述子を介してファイルにアクセスします。ファイルの変更方法は関係ありません。--- Ignacio Vazquez-Abramsの答えは正しいです-エディターは現在のファイル(で開くtail)を変更せず、古いファイルと同じ名前で新しいファイルに変更を保存します。
-pabouk
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.