私はtail -F
コマンドを使用したことがなく、常にコマンドを使用しましたが、特に説明なしにこれがより良いと言われtail -f
ました。-F
tailコマンドのマニュアルページを見つけました。
-f output appended data as the file grows;
-F Same as --follow=name --retry
--retry Keep trying to open a file even when it is or becomes inaccessible
小文字の機能を理解するのは簡単ですが、大文字の機能を-f
理解できません。-F
誰かが私にこれらの違いを説明してくれてありがとう。
ベストアンサー1
GNUユーティリティについて説明しましたtail
。これら2つのフラグの違いは、次のようにファイル(ログファイルなど)を開くと次のようになります。
$ tail -f /var/log/messages
...マイコンピュータのログ回転機能がメッセージが記録されている間にそのログファイルを回転させることを決定した場合(「回転」は削除または別の場所に移動するなど)、私が表示する出力は停止します。
tail
次のようにファイルを開くと:
$ tail -F /var/log/messages
tail
...もう一度言っても、ファイルが再び利用可能になると(つまり、ログを作成するプログラムが書き込みを開始すると)、ファイルが回転し、出力がコンソールから流れ続けます。新しい /var/log/messages
。
-F
無料のBSDシステムにはオプションはありませんが、メッセージが表示されることを除いて、tail -f
動作はGNUシステムの動作と似ています。tail -F
tail: file has been replaced, reopening.
監視中のファイルが消えて再び表示されると、出力に表示されます。
あなたはそれをテストすることができます
シェルセッションで以下を実行します。
$ cat >myfile
今あなたの入力を待ちます。数行の横説説を入力し続けます。それはすべてファイルに保存されますmyfile
。
存在するその他シェルセッション(おそらく他の端末では、中断なしcat
):
$ tail -f myfile
myfile
これにより、コンソールにコンテンツが(終了)表示されます。最初のシェルセッションに戻り、moreと入力すると、tail
2番目のシェルセッションに出力がすぐに表示されます。
今すぐcat
終了を押しCtrl+Dてから削除する文書myfile
:
$ rm myfile
その後、catを再実行してください。
$ cat >myfile
...そして数行を入力してみてください。
GNUを使用すると、次の行は次のようtail
になります。いいえ2番目のシェルセッションに表示されます(tail -f
まだ実行中)。
運動を繰り返し、tail -F
違いを観察してください。