tailコマンドがファイルの変更をリアルタイムで追跡しないのはなぜですか? [コピー]

tailコマンドがファイルの変更をリアルタイムで追跡しないのはなぜですか? [コピー]

ディスクリプタを使用してファイルをリアルタイムで追跡すると、ファイルに適用された変更は表示されませんがtail --follow=descriptor file_name、名前を使用してファイルをリアルタイムで追跡すると、ファイルに適用された変更は表示tail --follow=name file_nameされます。また、tailを使用してファイルを追跡している間にファイルに書き込むたびに、tail--follow=name出力にファイルが削除され、再び表示されるようにマークされます。これが出力ですtail: file_name: No such file or directory tail: 'file_name' has appeared; following new file。何が起こっているのでしょうか?ファイルは最初から書き換えられますか?ファイルが書き込まれるたびにファイル記述子が変更されますか?

ベストアンサー1

ファイルにどのように書きますか?

ファイルに書き込むときにファイルを移動または削除し、同じ名前の新しいファイルを作成し、そのファイルに書き込む場合が発生します。だからあなたが使うとき

  1. --follow=name: tail は file_name だけに興味があるので、書き込み前にファイルを移動/削除する時を知らせ、tail: file_name: No such file or directory同じ名前のファイルを生成すればそれを知らせてtail: 'file_name' has appeared; following new fileファイルに書き込むことができます。画面に何と書かれているのか見てください。

  2. --follow=descriptor: tail はファイルを移動/削除した後もファイル記述子に従い、ファイル記述子は前のファイルを指し、 と入力することで入力できます/proc/{tail process id}/fd

おすすめ記事