ターミナルで次のコマンドを誤って実行しました。
tail -f /logs/applications/logs*
次の出力が得られました。
tail: file shrunk!
Error 0
正確に何が起こったのかわかりません。私はしばらくの間、ディレクトリ内のファイルの数を追跡していませんでした。誰かが正確に何が起こったのか説明してもらえますか、そして私はファイルを失いましたか?.
編集:
偶然かどうかはわかりませんが、コードを実行した後、ディレクトリ内のファイル数を数えたところ、10個でした!
初めて10番が私を妄想させた...
正確に何が起こったのかわかりません。
何が起こったのかというと、ファイルは外部アプリケーションによってローテーションされていました。これは通常のことです。 logrotate
rotateログファイルなどのユーティリティ。つまり、既存のログファイルの内容は別のファイルに移動され、既存のログファイルはアプリケーションが再度書き込みを開始する前に空白。
tail
が追跡ファイルのサイズが減少したと判断すると、観察したメッセージを出力し、ファイルの追跡を続行します。
GNU coreutilsマニュアル の tail invocation
セクションからの引用:
どちらの方法を使用しても、追跡されたファイルが縮小したと判断された場合、
tail
はファイルが切り捨てられたことを示すメッセージを出力し、新しく決定されたエンドポイントからファイルの終わりの追跡を再開します。
いいえ、tail
コマンドはファイルの終わりのみを表示するため、ファイルを失うことはありませんでした。
/logs/applications/logs*
をtail
に渡すことは、複数のファイル/フォルダー(/logs/applications/logs*
パターンに一致するもの)を渡すことと同じです。このパターンはディレクトリでも一致する可能性があるため、これらの場合、tail
は機能しません。