tailコマンドの使い方|リアルタイムログ監視(-f)から行数・バイト指定、終了方法まで解説

コマンドリファレンス

結論:tailコマンドはファイルの「末尾」を表示・監視するコマンド

tailコマンドは、テキストファイルやログファイルの末尾部分を標準出力(画面)に表示するためのLinux/Unixコマンドです。

特にシステム開発やサーバー運用の現場において、リアルタイムに追記されるログファイルを監視する用途で非常によく使用されます。ファイルの先頭を表示するheadコマンドとは対照的な役割を持ちます。

tailコマンドの基本構文

基本となる使い方は以下の通りです。ファイル名のみを指定した場合、デフォルトでファイルの末尾10行を表示します。

tail [オプション] [ファイル名...]

例えば、sample.logの末尾10行を表示したい場合は以下のように実行します。

tail sample.log

実用的な使い方とオプション解説

実務で頻出する主要なオプションと、具体的なコマンド例を解説します。

1. 表示する行数を指定する(-n オプション)

末尾から指定した行数分だけを表示したい場合は、-nオプションを使用します。

tail -n 20 sample.log

上記のコマンドを実行すると、sample.logの末尾20行が表示されます。

【TIPS】行数指定の省略記法

-nを省略して、ハイフンに続けて数値を指定するだけでも同じ動作になります。

tail -20 sample.log

【応用】「指定した行目以降」をすべて表示する(+ 記号)

行数の指定時に数値の前にプラス記号(+)を付与すると、「ファイルの最初から数えてN行目以降」をすべて表示するという便利な挙動になります。

tail -n +20 sample.log

上記の例では、sample.logの20行目から最後の行までをすべて出力します。大きな設定ファイルなどの特定の位置から下を確認したい場合に有用です。

2. ファイルの追記をリアルタイム監視する(-f オプション)

tailコマンドで最もよく使われるのが、ファイルの更新をリアルタイムで追いかける-f(follow)オプションです。

tail -f /var/log/nginx/access.log

コマンドを実行すると、指定したファイルの末尾部分が表示された状態で待機状態になります。ファイルに新しいログが書き込まれると、その内容が自動的に画面に追記されます。

リアルタイム監視を終了する方法

-fオプションによる監視状態を終了し、通常のコマンド入力画面に戻るには、キーボードで以下を入力します。

Ctrl + C

3. ログローテーションに対応して監視を続ける(-F オプション)

実務のサーバー環境では、ログファイルが肥大化するのを防ぐために「ログローテーション」が行われます(例:access.logaccess.log.1にリネームされ、新しく空のaccess.logが作成される)。

小文字の-fオプションで監視している場合、ログファイルがリネームされると監視が途切れてしまいますが、大文字の-Fオプションを使用すると、ファイルが一度削除されたり再作成されたりしても、自動的に新しいファイルを追いかけ続けます。

tail -F /var/log/nginx/access.log

本番環境などのログを常時監視する際は、-fではなく-Fを使用するのが実務上のベストプラクティスです。

4. 複数ファイルを同時に監視する

tailコマンドには、複数のファイルを同時に指定することができます。

tail -f access.log error.log

複数ファイルを指定すると、画面上に ==> ファイル名 <== というヘッダーが表示され、どのファイルに書き込みがあったかが視覚的に分かります。Webサーバーのアクセスログとエラーログを同時に眺めたい場合に便利です。

5. 表示するバイト数を指定する(-c オプション)

行数ではなく、末尾の「バイト数」で表示範囲を指定したい場合は、-cオプションを使用します。

tail -c 100 sample.log

上記のコマンドは、sample.logの末尾100バイトを表示します。バイナリデータの一部を確認したい場合や、改行コードを含まないファイルの末尾を確認したい場合に役立ちます。

実務で役立つ他コマンドとの組み合わせ(パイプ)

tailコマンドは、他のLinuxコマンドとパイプ(|)で組み合わせることで、さらに強力になります。

1. tail -f と grep で特定のログのみを抽出監視する

grepコマンドと組み合わせることで、特定のキーワード(例:「ERROR」や「WARN」)が含まれるログだけをリアルタイムにフィルタリングして監視できます。

tail -f /var/log/app.log | grep "ERROR"

これにより、無関係な正常ログの表示を省き、エラーが発生した瞬間だけを素早くキャッチできます。

2. head と tail でファイルの中間部分を切り出す

headコマンドとtailコマンドを組み合わせることで、ファイル内の「特定の行の範囲(例:11行目から15行目)」だけをピンポイントで切り出すことができます。

head -n 15 sample.txt | tail -n 5

このコマンドは、まず先頭の15行をheadで抽出し、そのうち後ろの5行をtailで表示するため、結果として11〜15行目が画面に出力されます。

Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする

コメント