GNU tail
ユーティリティについて説明します。これら2つのフラグの違いは、ファイルを開くと、たとえば次のようなログファイルであるということです。
$ tail -f /var/log/messages
...そして、私のマシンのログローテーション機能が、書き込まれているメッセージを見ている間にそのログファイルをローテーションすることを決定した場合(「rotate」は削除または別の場所への移動などを意味します)、表示される出力はただやめる。
tail
このようにしてファイルを開くと:
$ tail -F /var/log/messages
...そして再び、ファイルがローテーションされ、出力がコンソールに表示され続けます。これは、ファイルがtail
再び使用可能になるとすぐに、つまり、ログへの書き込みプログラムがnew への書き込みを開始するとすぐにファイルを再度開くため/var/log/messages
です
無料のBSDシステムでは-F
オプションはありませんが、GNUシステムでのtail -f
ように動作tail -F
しますが、メッセージが表示されるという違いがあります。
tail: file has been replaced, reopening.
監視しているファイルが消えて再表示されると、出力に表示されます。
これをテストできます
1つのシェルセッションで、
$ cat >myfile
これで、入力するのを待つことになります。先に進んで、ちょっとした意味のない数行を入力してください。すべてファイルに保存されますmyfile
。
で、別の(多分他の端末では、シェルセッション中断なしcat
):
$ tail -f myfile
これによりmyfile
、コンソールのコンテンツ(の終わり)が表示されます。最初のシェルセッションに戻って何か入力すると、その出力はtail
2番目のシェルセッションですぐに表示されます。
をcat
押して終了し、ファイルCtrl+Dを削除しmyfile
ます。
$ rm myfile
次に、猫を再度実行します。
$ cat >myfile
...そして数行を入力します。
GNU tail
では、これらの行は2番目のシェルセッション(まだ実行中)では表示されませんtail -f
。
で練習を繰り返し、tail -F
違いを観察します。