このエントリーをはてなブックマークに追加


ローテーションされるファイルをtailする方法

tail -f ファイル名 でログなどを監視していると、ログのファイルサイズが規定のサイズになり、
自動的に別名にされ(ローテイト)され、tail -f では見れなくなってしまいます。
この代わりに-Fオプションを使うとこにより、ローテイトされても指定したファイルを関しすることができます。
以下に実際に動作確認を行った例を記します。

tail -F ファイル名を試してみる

以下に tail -F を試した実行例を記します。

  1. ターミナルを2つ開きます。
    tail -F コマンドを実行するターミナルをターミナル(A)、ファイル操作をするターミナルをターミナル(B)として記します。
  2. ターミナル(A)で以下のコマンドを実行します。
    tail -F /tmp/test.log
    以下、実行時の出力です。
    $ tail -F /tmp/test.log
    tail: `/tmp/test.log' を 読み込み用に開くことが出来ません: そのようなファイルやディレクトリはありません
    警告メッセージが出力されますが、tailコマンドは実行されています。
    ちなみに、-fオプションだと以下のようなエラーが出力されます。
    $ tail -f /tmp/test.log
    tail: `/tmp/test.log' を 読み込み用に開くことが出来ません: そのようなファイルやディレクトリはありません
    tail: ファイルが全く残っていません
    $
  3. ターミナル(B)から、/tmp/test.log ファイルに文字列を追記してみる。 以下のコマンドで/tmp/test.logに文字列を追記してみます。
    $ date > /tmp/test.log
    $ echo HELLO >> /tmp/test.log
  4. ターミナル(A)には、以下のメッセージが表示され、追記した文字列がターミナル(A)に表示されます。
    tail: `/tmp/test.log' が現れました。新しいファイルの終端を追跡します
    2016年 12月  8日 木曜日 19:02:42 JST
    HELLO
  5. ターミナル(B)でファイルを削除する。
    $ rm /tmp/test.log
  6. ターミナル(A)には以下のメッセージが表示されます。
    tail: `/tmp/test.log' はアクセス不能になりました: そのようなファイルやディレクトリはありません
  7. 再度、ターミナル(A)で監視ファイルを作成し文字列を追記してみる。
    $ echo SAKURA > /tmp/test.log
  8. ターミナル(A)に追記した文字列が表示されます。
    SAKURA

尚、停止したい場合は、Ctrl+Cを押してください。

以上のようにwebサーバのログやDBのログなどを関ししているとき、自動的にローテイトされてしまうので、
tailの-Fオプションを使用することにより、ファイルが削除されたり、リネームされたりしても、
常に指定したファイルを監視することができます。



トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2016-12-08 (木) 13:10:42