[Linux] tailコマンドの使い方 – 最終行からn行表示する

tailコマンドは、ファイルの末尾から指定した行数を表示するために使用されます。

最終行からn行を表示するには、-nオプションを使います。

例えば、tail -n 10 filenameとすると、filenameの最終行から10行分が表示されます。

-nオプションの代わりに-を使って、tail -10 filenameとすることも可能です。

デフォルトでは、tailは最後の10行を表示します。

この記事でわかること
  • tailコマンドの基本的な使い方
  • 最終行からn行表示する方法
  • 各種オプションの活用法
  • 応用例としての実践的な使い方

目次から探す

tailコマンドとは

tailコマンドは、LinuxやUnix系のオペレーティングシステムで使用される非常に便利なコマンドです。

このコマンドは、指定したファイルの末尾から一定の行数を表示するために使用されます。

主にログファイルの監視やデバッグ作業に役立ちます。

デフォルトでは、tailはファイルの最後の10行を表示しますが、オプションを使用することで表示する行数を変更したり、リアルタイムでファイルの更新を監視したりすることも可能です。

tailコマンドは、特にシステム管理者や開発者にとって重要なツールであり、ファイルの内容を迅速に確認する手段として広く利用されています。

例えば、サーバーのログファイルを監視する際に、最新のエラーメッセージやイベントを即座に把握することができます。

これにより、問題の早期発見やトラブルシューティングが容易になります。

tailコマンドの基本的な使い方

ファイルの末尾10行を表示する

tailコマンドを使用して、特定のファイルの末尾10行を表示するには、以下のようにコマンドを入力します。

tail filename.txt

ここで、filename.txtは表示したいファイルの名前です。

デフォルトでは、tailは最後の10行を表示します。

行91
行92
行93
行94
行95
行96
行97
行98
行99
行100

標準入力からのデータを表示する

tailコマンドは、標準入力からのデータを受け取って表示することもできます。

例えば、パイプを使って他のコマンドの出力をtailに渡すことができます。

echo -e "行1\n行2\n行3\n行4\n行5" | tail

このコマンドは、echoコマンドで生成したデータの末尾10行を表示します。

行1
行2
行3
行4
行5

複数ファイルの末尾を同時に表示する

複数のファイルの末尾を同時に表示するには、ファイル名をスペースで区切って指定します。

tail file1.txt file2.txt

このコマンドは、file1.txtfile2.txtの末尾10行をそれぞれ表示します。

各ファイルの出力の前にはファイル名が表示されます。

==> file1.txt <==
行91
行92
行93
行94
行95
行96
行97
行98
行99
行100
==> file2.txt <==
行1
行2
行3
行4
行5
行6
行7
行8
行9
行10

最終行からn行表示する方法

-nオプションの使い方

tailコマンドの-nオプションを使用すると、表示する行数を指定できます。

例えば、最後の5行を表示したい場合は、以下のようにコマンドを入力します。

tail -n 5 filename.txt

このコマンドは、filename.txtの末尾から5行を表示します。

行96
行97
行98
行99
行100

-nオプションの省略形

-nオプションは省略形として、-nの後に行数を指定することもできます。

例えば、最後の3行を表示する場合は、次のように書くことができます。

tail -3 filename.txt

このコマンドも同様に、filename.txtの末尾から3行を表示します。

行98
行99
行100

-nオプションで負の値を指定する場合

-nオプションに負の値を指定すると、ファイルの先頭から指定した行数を除いた部分を表示します。

例えば、最初の5行を除いた内容を表示するには、次のようにします。

tail -n -5 filename.txt

このコマンドは、filename.txtの最初の5行を除いた残りの行を表示します。

行6
行7
行8
行9
行10
...
行100

-nオプションと他のオプションの組み合わせ

-nオプションは、他のオプションと組み合わせて使用することができます。

例えば、リアルタイムでファイルの更新を監視しつつ、最後の10行を表示するには、-fオプションと組み合わせて次のようにします。

tail -n 10 -f filename.txt

このコマンドは、filename.txtの末尾から10行を表示し、その後の更新もリアルタイムで表示します。

これにより、ログファイルの監視が容易になります。

tailコマンドのオプション

-fオプションでリアルタイムにファイルを監視する

-fオプションを使用すると、ファイルの末尾をリアルタイムで監視することができます。

このオプションは、ログファイルなどの更新を即座に確認したい場合に非常に便利です。

以下のようにコマンドを入力します。

tail -f filename.log

このコマンドは、filename.logの末尾を表示し、新しい行が追加されるたびに自動的に更新されます。

行101: 新しいエラーメッセージ
行102: 新しい情報メッセージ

-cオプションでバイト単位で表示する

-cオプションを使用すると、ファイルの末尾から指定したバイト数を表示できます。

例えば、最後の100バイトを表示するには、次のようにします。

tail -c 100 filename.txt

このコマンドは、filename.txtの末尾から100バイトを表示します。

...(ファイルの最後の100バイトの内容)

–pidオプションでプロセス終了まで監視する

--pidオプションを使用すると、指定したプロセスID(PID)が終了するまでファイルの監視を続けることができます。

以下のようにコマンドを入力します。

tail -f --pid=1234 filename.log

このコマンドは、プロセスIDが1234のプロセスが終了するまで、filename.logの末尾を監視し続けます。

-qオプションでファイル名を表示しない

-qオプションを使用すると、複数のファイルを表示する際にファイル名を表示せずに内容だけを表示できます。

以下のようにコマンドを入力します。

tail -q file1.txt file2.txt

このコマンドは、file1.txtfile2.txtの末尾を表示しますが、ファイル名は表示されません。

行91
行92
行1
行2

-vオプションでファイル名を強制的に表示する

-vオプションを使用すると、複数のファイルを表示する際に、ファイル名を強制的に表示することができます。

以下のようにコマンドを入力します。

tail -v file1.txt file2.txt

このコマンドは、file1.txtfile2.txtの末尾を表示し、それぞれのファイル名を表示します。

==> file1.txt <==
行91
行92
==> file2.txt <==
行1
行2

応用例

ログファイルの監視にtailを使う

tail -fコマンドを使用することで、リアルタイムでログファイルを監視できます。

例えば、Webサーバーのアクセスログを監視する場合、次のようにコマンドを入力します。

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

このコマンドは、Apacheのアクセスログをリアルタイムで表示し、新しいアクセスがあるたびに更新されます。

これにより、トラフィックの状況を即座に把握できます。

tailとgrepを組み合わせて特定の行を抽出する

tailgrepを組み合わせることで、特定のキーワードを含む行だけを抽出することができます。

例えば、エラーメッセージを含む行を表示するには、次のようにします。

tail -f /var/log/syslog | grep "ERROR"

このコマンドは、システムログの末尾を監視し、”ERROR”というキーワードを含む行だけを表示します。

これにより、エラーの発生を迅速に確認できます。

tailとheadを組み合わせて範囲指定で表示する

tailheadを組み合わせることで、ファイルの特定の範囲を表示することができます。

例えば、ファイルの末尾から10行を表示し、その中から最初の5行を表示するには、次のようにします。

tail -n 10 filename.txt | head -n 5

このコマンドは、filename.txtの末尾から10行を取得し、その中の最初の5行を表示します。

これにより、最新の情報の一部を簡単に確認できます。

tailとawkを組み合わせてデータを加工する

tailawkを組み合わせることで、データを加工して表示することができます。

例えば、ログファイルの末尾から特定の列だけを抽出する場合、次のようにします。

tail -n 20 filename.log | awk '{print $1, $3}'

このコマンドは、filename.logの末尾から20行を取得し、各行の1列目と3列目を表示します。

これにより、必要な情報だけを効率的に抽出できます。

tailを使ったシェルスクリプトの作成

tailコマンドを使用したシェルスクリプトを作成することで、定期的にログファイルを監視したり、特定の処理を自動化することができます。

以下は、特定のキーワードを含む行を監視するシンプルなスクリプトの例です。

#!/bin/bash
LOGFILE="/var/log/syslog"
KEYWORD="ERROR"
tail -f $LOGFILE | grep --line-buffered "$KEYWORD" >> error_log.txt

このスクリプトは、システムログをリアルタイムで監視し、”ERROR”というキーワードを含む行をerror_log.txtに追記します。

これにより、エラーメッセージを効率的に収集できます。

スクリプトを実行するには、実行権限を付与する必要があります。

chmod +x script.sh

よくある質問

tailコマンドで特定の文字列を含む行だけを表示できますか?

はい、tailコマンドとgrepコマンドを組み合わせることで、特定の文字列を含む行だけを表示することができます。

例えば、以下のようにコマンドを入力します。

tail -f filename.log | grep "特定の文字列"

このコマンドは、filename.logの末尾を監視し、”特定の文字列”を含む行だけを表示します。

tailコマンドでファイルが更新されない場合の対処法は?

tail -fコマンドを使用している場合、ファイルが更新されないと表示も止まります。

これが発生する理由として、ファイルがロックされている、または書き込み権限がない場合があります。

以下の対処法を試してみてください。

  • ファイルの書き込み権限を確認する。
  • ファイルが他のプロセスによってロックされていないか確認する。
  • tailコマンドを再実行してみる。

tailコマンドで大量のデータを扱う際のパフォーマンスは?

tailコマンドは、通常は非常に効率的に動作しますが、大量のデータを扱う場合、パフォーマンスに影響が出ることがあります。

特に、-fオプションを使用してリアルタイムで監視する場合、以下の点に注意が必要です。

  • 表示する行数を必要最小限にする(例:tail -n 100)。
  • 不要なオプションを避ける。
  • 大きなファイルを扱う場合は、-cオプションを使用してバイト単位で表示することも検討する。

これらの対策を講じることで、tailコマンドのパフォーマンスを向上させることができます。

まとめ

この記事では、tailコマンドの基本的な使い方やさまざまなオプションについて詳しく解説しました。

特に、ファイルの末尾から特定の行数を表示する方法や、リアルタイムでの監視、他のコマンドとの組み合わせによる応用例に焦点を当てました。

これを機に、tailコマンドを活用して、ログファイルの監視やデータの抽出を効率的に行ってみてください。

  • URLをコピーしました!
目次から探す