現場で使えるtailコマンド。ログ監視で必要なオプションなど。

Linux

運用・保守の業務をおこなっている人にとっては、とても馴染みがあるコマンドのtailコマンドについてまとめてみます。


筆者が一番使うタイミングは、やっぱりログ監視です。

tailは「尻尾」「末尾」の略ですが、tailコマンドを使えばファイルの終端を常に表示するので、稼働中システムのログを監視する際にとても便利です。


基本動作


tail ※ファイル名 で、ファイルの末尾を表示することができます。


$ tail file1.txt
テスト8
テスト9
テスト10

追記を監視(ラージFとスモールf)


基本動作の tail ※ファイル名 だけでは、ファイルが追記されいったとしてもコマンド上に追記内容が表示されません。


しかしこれだと、例えばアプリケーションのログ監視をおこなう場合に不便です。
アプリケーションがログに追記するたびに表示内容を更新する(常に末尾表示)ためには、-f オプションを使用します。


$ tail -f file1.txt
テスト8
テスト9
テスト10
$ tail -f file1.txt
テスト9
テスト10
テスト11 ← 追記されている。

上記は-f(スモールf)を使っていますが、ログ監視のことを考えると不便な事があります。
それはログのローテーションです。


指定しているファイルがリネームされて新しいファイル名となり、指定しているファイルが新規ファイルとなった場合、-f(スモールf)では末尾監視がおこなわれません。


tailコマンドで監視できない

ログローテーションのように、監視対象のファイルが新しく作成された場合も監視した場合は、-f(スモールf)ではなく-F(ラージF)を使います。
-F(ラージF)を使う事で、ファイル名が変わって監視対象ファイルが新規作成されたとしても、対象ファイルは監視が継続されます。


$ tail -F file1.txt
tail: `file1.txt' has become inaccessible: No such file or directory
tail: `file1.txt' has appeared;  following end of new file
tail: file1.txt: file truncated
ファイル1
ファイル2
ファイル3

行数を指定する(-n)


末尾の表示する行数を指定示することも可能です。


$ tail -n3 file1.txt
ファイル9
ファイル10
ファイル11

-fオプションを指定して、末尾N行を監視する、といったことも可能です。


$ tail -3f file1.txt
ファイル9
ファイル10
ファイル11

パイプで繋げてgrepで抽出


特にtailコマンドのオプションではないのですが、大量にログを出力するアプリケーションであれば、-fオプションを指定していてログを監視していてもログが流れるのが早くて目で追えないです。

その場合は、監視しておきたいキーワードを事前に決めておき、パイプで繋いでgrepコマンドで抽出するようにしておきます。


$ tail -f file1.txt | grep ※キーワード
ファイル12

上記のようにパイプで繋いでgrepを指定することで、grepで指定したキーワードが出現した時だけ表示してくれます。

とても効率的なログ監視をおこなうことができます。


まとめ


現場のエンジニアにとって、tailコマンドは必須のコマンドかと思います。
上手に使いこなして、日々の作業に役立ててください。



sakusaku

都内でSIerをやっています。 使用している技術は、Java、PHP、MySQL、PostgreSQL、Oracle、Apache、Tomcat、あたりです。 Pythonやってみたいです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください