Linux の tail コマンド:ファイル末尾の表示

LinuxLinuxBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

このチュートリアルでは、Linux の tail コマンドを調べます。これは、テキストファイルの最後の行を表示するための強力なユーティリティです。システム管理者にとって一般的なタスクであるシステムログファイルの監視という実用的なシナリオに焦点を当てます。このチュートリアルが終了すると、tail を使ってファイルの内容を表示し、出力をカスタマイズし、リアルタイムの変更を監視する方法を理解していただけるようになります。この実践的な経験は、トラブルシューティングとシステム監視にとって貴重なスキルを提供します。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/BasicFileOperationsGroup -.-> linux/head("File Beginning Display") linux/BasicFileOperationsGroup -.-> linux/tail("File End Display") linux/BasicFileOperationsGroup -.-> linux/less("File Paging") subgraph Lab Skills linux/cat -.-> lab-214303{{"Linux の tail コマンド:ファイル末尾の表示"}} linux/head -.-> lab-214303{{"Linux の tail コマンド:ファイル末尾の表示"}} linux/tail -.-> lab-214303{{"Linux の tail コマンド:ファイル末尾の表示"}} linux/less -.-> lab-214303{{"Linux の tail コマンド:ファイル末尾の表示"}} end

tail の基本を理解する

tail コマンドは、ファイルの末尾を表示するための便利なツールです。ログファイルの最新のエントリを確認したり、文書の最新の変更を素早く見る際に特に役立ちます。

まずは、サンプルのログファイルを見てみましょう。/home/labex/project ディレクトリにある system.log という名前のファイルを使います。

入力:

tail /home/labex/project/system.log

このコマンドをターミナルに入力して Enter キーを押してください。ターミナルに慣れていなくても大丈夫です。これは、コマンドを入力できるテキストベースのインターフェイスです。

このコマンドは、system.log ファイルの最後の 10 行を表示します。出力は以下のようになるかもしれません。

2024-03-15 09:23:45 [INFO] User 'john_doe' logged in successfully
2024-03-15 09:24:12 [WARNING] Disk usage on /dev/sda1 reached 80%
2024-03-15 09:25:03 [ERROR] Failed to connect to database server
2024-03-15 09:25:30 [INFO] Backup process started
2024-03-15 09:26:17 [INFO] Network interface eth0 went down
2024-03-15 09:26:45 [INFO] Network interface eth0 is up
2024-03-15 09:27:22 [WARNING] High CPU usage detected: 92%
2024-03-15 09:28:01 [INFO] Scheduled system update initiated
2024-03-15 09:28:39 [ERROR] Unable to reach email server
2024-03-15 09:29:10 [INFO] Firewall rules updated successfully

表示されている内容を分解してみましょう。

  • 各行はログエントリを表しています。
  • 各行の最初の部分はタイムスタンプ(日付と時刻)です。
  • 角括弧内のテキスト([INFO]、[WARNING]、または [ERROR] のような)は、ログエントリの重大度レベルを示しています。
  • それ以降の行は実際のログメッセージです。

デフォルトでは、tail はファイルの最後の 10 行を表示します。この動作は、最新のログエントリやファイルの変更を素早く確認するために、全体のファイルを開いてスクロールする必要なく特に便利です。

表示行数のカスタマイズ

時には、デフォルトの 10 行よりも多いか少ない行数を表示する必要がある場合があります。-n オプション(「number」の略)を使うと、表示したい行数を正確に指定できます。

ログファイルの最後の 5 行を表示してみましょう。

入力:

tail -n 5 /home/labex/project/system.log

このコマンドをターミナルに入力して Enter キーを押してください。-n 5 の部分は、tail に対してデフォルトの 10 行ではなく、最後の 5 行のみを表示するように指示します。

このコマンドの出力は以下のようになります。

2024-03-15 09:27:22 [WARNING] High CPU usage detected: 92%
2024-03-15 09:28:01 [INFO] Scheduled system update initiated
2024-03-15 09:28:39 [ERROR] Unable to reach email server
2024-03-15 09:29:10 [INFO] Firewall rules updated successfully
2024-03-15 09:29:45 [INFO] User 'jane_smith' logged out

ご覧の通り、最新のログエントリに焦点を当てた表示になっています。多すぎる情報に圧倒されることなく、最新のイベントを探す際には特に便利です。

5 の部分を好きな数に置き換えることができます。たとえば、tail -n 20 は最後の 20 行を表示し、tail -n 1 はファイルの最後の 1 行のみを表示します。

特定の行からの内容表示

tail は通常、ファイルの末尾を表示するために使用されますが、特定の行番号からの内容を表示するためにも使用できます。これは、行番号の前にプラス記号 (+) を使用することで行います。

ログファイルの 50 行目からの内容を表示してみましょう。

入力:

tail -n +50 /home/labex/project/system.log

このコマンドをターミナルに入力して Enter キーを押してください。-n +50 は、tail に対して 50 行目以降の内容を表示するように指示します。

このコマンドは、50 行目からファイルの末尾までのすべての行を表示します。出力は、ログファイルのサイズに応じてかなり長くなる場合があります。表示例は以下の通りです。

2024-03-15 08:45:12 [INFO] Backup process completed successfully
2024-03-15 08:46:03 [WARNING] Low memory warning: Available memory below 15%
2024-03-15 08:47:30 [INFO] System update check initiated
...
(さらに多くの行)
...
2024-03-15 09:29:10 [INFO] Firewall rules updated successfully
2024-03-15 09:29:45 [INFO] User 'jane_smith' logged out

この機能は、特定のポイントからファイルの大部分を表示する必要がある場合に特に役立ちます。ログ内の特定の時刻または特定のイベント以降に発生した可能性のある問題を調査するのに役立ちます。

注: ファイル内の全行数よりも大きな数を指定した場合、tail は単にファイルの全体の内容を表示します。

リアルタイムでのファイル変更の監視

tail の最も強力な機能の 1 つは、リアルタイムでファイルを監視する機能です。これは、ログファイルが書き込まれる際の監視に特に役立ちます。これを実現するには、-f オプション(「follow」の略)を使用します。

ログファイルをリアルタイムで監視してみましょう。

入力:

tail -f /home/labex/project/system.log

このコマンドをターミナルに入力して Enter キーを押してください。このコマンドを実行すると、ファイルの最後の 10 行が表示され、その後、ファイルにリアルタイムで追加される新しい行が表示されます。

新しいログエントリが追加されることをシミュレートするには、新しいターミナルウィンドウを開き、次のコマンドを実行します。

echo "$(date) [INFO] New log entry for testing" >> /home/labex/project/system.log

tail -f が実行されているターミナルに新しいエントリが表示されるはずです。このリアルタイム監視は、システム管理者がシステムイベントを発生したときに追跡する必要がある場合に非常に貴重です。

tail -f コマンドを終了するには、それが実行されているターミナルで Ctrl+C を押します。このキーボードショートカットは、現在のプロセスに割り込み信号を送信して、tail コマンドを停止します。

高度な使用法のためのオプションの組み合わせ

tail コマンドは、さまざまなオプションを組み合わせるとさらに強力になります。ログファイルの最後の 3 行をリアルタイムで監視するために、-n オプションと -f オプションを組み合わせてみましょう。

入力:

tail -n 3 -f /home/labex/project/system.log

このコマンドをターミナルに入力して Enter キーを押してください。このコマンドは、ファイルの最後の 3 行を表示した後、ファイルに追加される新しい行を表示し続けます。急速に変化するログファイルの最新のエントリに焦点を当てたい場合に便利です。

これをテストするには、別のターミナルウィンドウを開き、新しいログエントリを追加します。

echo "$(date) [WARNING] Unusual network activity detected" >> /home/labex/project/system.log

tail -n 3 -f が実行されているターミナルに、この新しいエントリと前の 2 つのエントリが表示されるはずです。

監視が終了したら、Ctrl+C を使って tail コマンドを終了してください。

ヒント: この場合、オプションの順序は問題ありません。tail -f -n 3 も同じように機能します。

まとめ

このチュートリアルでは、Linux の汎用的な tail コマンドを調べ、そのログファイルの監視への応用に焦点を当てました。以下のことを学びました。

  1. 基本的な tail コマンドを使ってファイルの最後の行を表示する方法
  2. -n オプションを使って表示する行数をカスタマイズする方法
  3. tail -n +N を使って特定の行からの内容を表示する方法
  4. -f オプションを使ってファイルの変更をリアルタイムで監視する方法
  5. より高度な使用法のためにオプションを組み合わせる方法

これらのスキルは、システム管理、デバッグ、監視タスクにとって基本的です。tail に慣れるにつれて、Linux ツールキットに欠かせないツールであることがわかるでしょう。