システム運用やアプリケーション開発に携わっていると、リアルタイムでログを確認したい場面があります。予期しないエラーや異常動作の兆候を素早く把握するためには、ログファイルの監視は不可欠です。そんなときに便利なのが、Linuxに標準搭載されているtailコマンドです。本記事では、このtailコマンドを使ってリアルタイムでログを監視する方法について、基本的な使い方から応用テクニックまで、詳しく解説していきます。
tailコマンドでファイルの末尾を表示
tailコマンドは、指定したファイルの末尾部分を表示するLinuxコマンドで、ログファイルなどの末尾の確認に特に適しています。デフォルトでは最後の10行を出力しますが、オプションを活用することで表示行数の変更やリアルタイム表示など、多様な使い方が可能です。 tailコマンド単独ではファイルの末尾を出力することができます。
tailコマンドの構文
以下のようにコマンドにファイル名を指定します。
tail [ファイル名]複数ファイルを指定することもできます。
tail [ファイル名] [ファイル名] [ファイル名…]-qオプションを利用すると、出力時にファイル名を非表示にすることができます。
tail -q [ファイル名] [ファイル名] [ファイル名…]tailコマンドで末尾の10行を表示
nginxのログ/var/log/nginx/access.logを例に説明します。
ファイルの末尾を表示します。
tail /var/log/nginx/access.logデフォルトでは10行が表示されます。
tailコマンドで末尾の100行を表示
-nオプションで表示行を指定することができます。
以下コマンドで末尾を100行表示します。
tail -n 100 /var/log/nginx/access.logtailコマンドでファイルの末尾を表示(リアルタイム)
ログファイルの内容が時間と共に更新される場合、常に最新の情報を確認したいというニーズがあります。そのようなときに使えるのが-fオプションです。これを使うことで、ログファイルの変化をリアルタイムでターミナル上に表示することができます。
tailコマンドの-fまたは-Fオプションを利用することで、ログをリアルタイムに表示することができます。
-Fオプションでは、ログローテーションに対応した監視が可能です。
-fでログをリアルタイム監視する
-fオプションで追記されたログをリアルタイム監視することができます。
tail -f /var/log/nginx/access.logこのコマンドを実行すると、ファイルの末尾に新たに追加された行が都度表示されていきます。たとえば、Webサーバーのログやデータベースのエラーログなど、運用中に逐次更新されるファイルの監視にぴったりです。
また、ログを眺めながら動作確認やテストを行うことで、異常発生時の挙動を即座に把握できるため、デバッグの効率も向上します。
-Fでログをリアルタイム監視する
ログローテーション後も追従する場合は、-Fオプションを指定します。
tail -F /var/log/nginx/access.log以下のように-n 0の指定を組み合わせることで、追記されたログのみを表示できるので便利です。
tail -F -n 0 /var/log/nginx/access.log実際の運用では、複数のログファイルを同時に監視したいケースも珍しくありません。例えば、アプリケーションログと認証ログを同時にチェックしたい場合などです。 複数ファイルを追従する場合は、以下のように指定します。
tail -F -n 0 -q /var/log/syslog /var/log/auth.logファイル名を表示せずに内容だけを表示したい場合に-qオプションを指定します。
-fと-Fオプションの違いと使い分け
-fオプションに加えて、-Fオプションも覚えておくと便利です。-Fオプションは、-fの機能に加え、監視対象のファイルが切り替わった場合でも(例:ログローテーションでファイルが新しくなった場合)自動的に新しいファイルに追従します。
tail -F /var/log/syslogログローテーションが定期的に行われる環境では、-fではなく-Fを使うことで、ログ監視が途切れる心配を減らすことができます。特にサーバーの長時間監視などでは、-Fを使うのがベストプラクティスと言えるでしょう。
実践例:アプリケーションログのデバッグ
例えば、Webアプリケーションでエラーが発生したとき、その原因を素早く突き止めたいときには以下のようにログを監視します。
tail -F /var/www/app/log/error.logこのままでも効果的ですが、特定のキーワード(例えば「ERROR」や「WARNING」など)を含む行だけを見たい場合は、grepとパイプで組み合わせて使うと、さらに便利です。
tail -F /var/www/app/log/error.log | grep ERRORこれにより、大量のログの中からエラーに関連する情報だけを抽出して表示でき、トラブルシューティングのスピードが格段に上がります。grep -iを使えば大文字・小文字を区別せずに検索することも可能です。
tail -F /var/www/app/log/error.log | grep -i errortailコマンドまとめ
各オプションの意味は以下の通りです。
| オプション | 意味 |
|---|---|
| -n | 最後のn行を表示する。 |
| -f | 追加されたデータを表示する。 |
| -F | 追加されたデータを表示する。(ログローテーション後も追従) |
| -q | 複数のファイルを指定した場合、ファイル名を表示せずに内容だけを表示。 |
ログ監視をする際は-fではなく、ログローテーションに対応した-Fを使用するのが、
おすすめです。
Linuxのtailコマンドは、ログファイルの末尾を柔軟かつリアルタイムに確認できる、便利なコマンドです。-fオプションを使えばシンプルにログを追跡でき、-Fを使えばログローテーションにも対応できます。さらに、grepなどの他のコマンドと組み合わせることで、目的の情報を効率よく抽出することが可能になります。
日々の運用監視やトラブル対応、アプリケーションのデバッグ作業など、あらゆる場面で活躍するtailコマンド。基本的な使い方を押さえた上で、応用的なテクニックも積極的に取り入れ、より効率的なシステム管理を目指しましょう。
以上で本記事の解説を終わります。
よいITライフを!