ウェブサイト検索

Linuxでtailコマンドを使用する方法


重要なポイント

  • Linuxのtailコマンドはファイルの末尾からデータを表示し、ログファイルの監視や最近の追加を表示するのに便利です。
  • いくつかのLinuxディストリビューションでsystemdが導入されたことで、システムログファイルの形式がバイナリ形式に変更されましたが、多くのアプリケーション生成のログファイルは依然としてプレーンテキスト形式を使用しています。
  • tailはリアルタイムで更新を表示するだけでなく、特定の行数を表示したり、複数のファイルに対して作業したり、ファイルの先頭から行を表示したり、バイトオフセットを使用したり、パイピングを通じて他のコマンドと組み合わせることもできます。

Linuxのtailコマンドは、ファイルの末尾からデータを表示します。ファイルにリアルタイムで追加される更新も表示できます。使用方法をお教えします。

systemdはtailを終了させましたか?

tailコマンドは、ファイルの末尾のデータを表示します。通常、新しいデータはファイルの末尾に追加されるため、tailコマンドはファイルへの最新の追加を迅速かつ簡単に確認する方法です。また、このコマンドはファイルを監視し、ファイルに新しいテキストエントリが発生するたびに表示することもできます。これにより、ログファイルを監視するのに優れたツールとなります。

多くの現代的なLinuxディストリビューションは、systemdシステムおよびサービスマネージャを採用しています。これは最初に実行されるプロセスで、プロセスIDは1であり、他のすべてのプロセスの親です。この役割は以前は古いinitシステムが担当していました。

この変更に伴い、システムログファイルの新しいフォーマットが導入されました。もはやプレーンテキストでは作成されず、systemdの下ではバイナリ形式で記録されます。これらのログファイルを読むには、journactlユーティリティを使用する必要があります。tailコマンドはプレーンテキスト形式で機能します。バイナリファイルは読み取れません。では、これはtailコマンドが問題を探している解決策ということになるのでしょうか?それでも何か提供できるものはありますか?

「tail」コマンドには、リアルタイムでの更新を表示する以上のことがあります。それに関して言えば、システムによって生成されていない多くのログファイルがまだ存在し、平文のファイルとして作成されています。たとえば、アプリケーションによって生成されるログファイルの形式は変わっていません。

Linuxでtailを使用する

ファイルの名前をtailに渡すと、そのファイルの最後の10行を表示します。私たちが使用している例のファイルには、ソートされた単語のリストが含まれています。各行には番号が付けられているので、例に従ってさまざまなオプションがどのような影響を与えるかを簡単に確認できます。

tail word-list.txt

異なる行数を見るには、-n(行数)オプションを使用してください。

tail -n 15 word-list.txt

実際には、「-n」を省略して、「-」と数字を使うことができます。その間にスペースがないことを確認してください。技術的にはこれは廃止されたコマンド形式ですが、まだmanページに記載されており、まだ動作します。

tail -12 word-list.txt

複数のファイルで tail を使用する

tailを使用して複数のファイルを同時に処理することができます。コマンドラインにファイル名を渡すだけです。

tail -n 4 list-1.txt list-2.txt list-3.txt

各ファイルの行がどのファイルに属しているかわかるように、小さなヘッダーが各ファイルに表示されます。

ファイルの先頭から行を表示する

+(開始からカウント)修飾子は、特定の行番号から始めてファイルの最初からの行を表示するようにtailを設定します。ファイルが非常に長い場合、ファイルの最初に近い行を選択すると、端末ウィンドウに多くの出力が送信されることになります。その場合、tailの出力をlessにパイプするのが理にかなっています。

tail +440 list-1.txt

テキストを制御された方法でページをめくることができます。

このファイルには偶然20,445行あるため、このコマンドは「-6」オプションを使用するのと同等です:

tail +20440 list-1.txt

テールを使ったバイト

tailに行の代わりにバイト単位のオフセットを使用するように指示するには、-c(バイト)オプションを使用します。これは、規則的なサイズのレコードにフォーマットされたテキストファイルがある場合に便利です。改行文字は1バイトとしてカウントされることに注意してください。このコマンドは、ファイルの最後の93バイトを表示します:

tail -c 93 list-2.txt

ファイルの先頭からバイト単位でオフセットを指定するために、-c(バイト)オプションと、+(ファイルの先頭からのカウント)修飾子を組み合わせることができます。

tail -c +351053 list-e.txt

tailコマンドへのパイプ

以前、私たちはtailの出力をlessにパイプしました。他のコマンドの出力をtailにパイプすることもできます。

最も古い修正日時のファイルまたはフォルダーを5つ特定するには、lsの-t(修正日時でソート)オプションを使用し、出力をtailにパイプします。

ls -tl | tail -5

headコマンドはファイルの先頭からテキストの行を一覧表示します。これをtailと組み合わせてファイルの一部を抽出できます。ここでは、headコマンドを使用してファイルから最初の200行を抽出しています。これがtailにパイプされて、最後の10行を抽出しています。これにより、191行から200行までの行が得られます。つまり、最初の200行の最後の10行です。

head -n 200 list-1.txt | tail -10

このコマンドは、メモリを最も多く消費している5つのプロセスをリストします。

ps aux | sort -nk +4 | tail -5

それを分解してみましょう。

コマンドpsは、実行中のプロセスに関する情報を表示します。使用されるオプションは次のとおりです:

  • a: 現在のユーザーだけでなく、すべてのプロセスをリストします。
  • u: ユーザー指向の出力を表示します。
  • x: TTY内で実行されていないプロセスも含めて、すべてのプロセスをリストします。

sort コマンドは ps の出力をソートします。私たちが sort で使用しているオプションは次のとおりです:

  • n: 数値でソートする。
  • k +4: 4番目の列でソートします。

tail -5コマンドは、ソートされた出力から最後の5つのプロセスを表示します。これらは最もメモリを消費している5つのプロセスです。

リアルタイムでファイルを追跡するためのtailの使用

ファイルに到着する新しいテキストエントリを追跡することは、通常ログファイルであり、tailを使うことで簡単です。コマンドラインにファイル名を渡し、-f(フォロー)オプションを使用します。

tail -f geek-1.log

新しいログエントリがログファイルに追加されるたびに、tailはターミナルウィンドウの表示を更新します。

出力を特定の関連性や関心のある行のみを含むように洗練することができます。ここでは、grepを使用して「平均」という単語を含む行のみを表示しています:

tail -f geek-1.log | grep average

2つ以上のファイルの変更を追跡するには、コマンドラインでファイル名を渡します:

tail -f -n 5 geek-1.log geek-2.log

各エントリには、テキストがどのファイルから来たのかを示すヘッダーがタグ付けされています。

新しいエントリーがフォローしているファイルに到着するたびに表示が更新されます。更新期間を指定するには、-s(スリープ期間)オプションを使用します。これにより、tail はファイルチェックの間に、例としてここでは5秒、待機することを指示します。

tail -f -s 5 geek-1.log

確かに、スクリーンショットを見てもわからないかもしれませんが、ファイルの更新は2秒ごとに行われています。新しいファイルのエントリは、5秒ごとにターミナルウィンドウに表示されています。

複数のファイルへのテキスト追加を追跡する場合、テキストがどのログファイルから来たのかを示すヘッダーを抑制することができます。このためには、-q(静かな)オプションを使用してください:

tail -f -q geek-1.log geek-2.log

ファイルからの出力は、テキストのシームレスな融合として表示されます。各エントリがどのログファイルから来たのかは示されていません。

尾はまだ価値がある

システムログファイルへのアクセスは現在journalctlによって提供されていますが、tailにはまだ多くの利点があります。これは特に、tailに入れたり出したりする他のコマンドと組み合わせて使用する場合に当てはまります。

systemd は風景を変えたかもしれませんが、1つのことをうまくやるという Unix の哲学に従った従来のユーティリティのための場所はまだあります。

Linuxコマンド

ファイル

t

プロセス

A

ネットワーキング

netstat・ping・traceroute・ip・ss・whois・fail2ban・bmon・dig・finger・nmap・ftp・curl・wget・who・whoami・w・iptables・ssh-keygen・ufw・arping・firewalld

関連記事: