[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.txt
とfile2.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.txt
とfile2.txt
の末尾を表示しますが、ファイル名は表示されません。
行91
行92
行1
行2
-vオプションでファイル名を強制的に表示する
-v
オプションを使用すると、複数のファイルを表示する際に、ファイル名を強制的に表示することができます。
以下のようにコマンドを入力します。
tail -v file1.txt file2.txt
このコマンドは、file1.txt
とfile2.txt
の末尾を表示し、それぞれのファイル名を表示します。
==> file1.txt <==
行91
行92
==> file2.txt <==
行1
行2
応用例
ログファイルの監視にtailを使う
tail -f
コマンドを使用することで、リアルタイムでログファイルを監視できます。
例えば、Webサーバーのアクセスログを監視する場合、次のようにコマンドを入力します。
tail -f /var/log/apache2/access.log
このコマンドは、Apacheのアクセスログをリアルタイムで表示し、新しいアクセスがあるたびに更新されます。
これにより、トラフィックの状況を即座に把握できます。
tailとgrepを組み合わせて特定の行を抽出する
tail
とgrep
を組み合わせることで、特定のキーワードを含む行だけを抽出することができます。
例えば、エラーメッセージを含む行を表示するには、次のようにします。
tail -f /var/log/syslog | grep "ERROR"
このコマンドは、システムログの末尾を監視し、”ERROR”というキーワードを含む行だけを表示します。
これにより、エラーの発生を迅速に確認できます。
tailとheadを組み合わせて範囲指定で表示する
tail
とhead
を組み合わせることで、ファイルの特定の範囲を表示することができます。
例えば、ファイルの末尾から10行を表示し、その中から最初の5行を表示するには、次のようにします。
tail -n 10 filename.txt | head -n 5
このコマンドは、filename.txt
の末尾から10行を取得し、その中の最初の5行を表示します。
これにより、最新の情報の一部を簡単に確認できます。
tailとawkを組み合わせてデータを加工する
tail
とawk
を組み合わせることで、データを加工して表示することができます。
例えば、ログファイルの末尾から特定の列だけを抽出する場合、次のようにします。
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
コマンドを活用して、ログファイルの監視やデータの抽出を効率的に行ってみてください。