技術ノート Linux Linux で tail コマンドを使用する方法

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

重要なポイント

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

Linux の tail コマンドは、ファイルの末尾からデータを表示します。ファイルに追加された更新をリアルタイムで表示することもできます。使い方をご紹介します。

systemd は尾をキルしましたか?

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

最新の Linux ディストリビューションの多くは systemd システムとサービス マネージャー を採用しています。これは最初に実行されるプロセスであり、 プロセス ID は 1 であり、他のすべてのプロセスの親です。この役割は 、古い init システムによって処理され ていました。

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

tail コマンドには、リアルタイムで更新を表示するだけではありません。さらに言えば、システムによって生成されず、プレーン テキスト ファイルとして作成されたログ ファイルがまだたくさんあります。たとえば、アプリケーションによって生成されたログ ファイルの形式は変更されていません。

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

Linux でのテールの使用

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

末尾の単語リスト.txt

別の行数を表示するには、 -n (行数) オプションを使用します。

 tail -n 15 単語リスト.txt

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

 tail -12 単語リスト.txt 

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

複数のファイルでの tail の使用

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

 tail -n 4 リスト-1.txt リスト-2.txt リスト-3.txt

ファイルごとに小さなヘッダーが表示されるので、その行がどのファイルに属しているかがわかります。

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

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

+ (先頭からカウント) 修飾子を使用すると、ファイルの先頭から特定の行番号から始まる tail 行が表示されます。ファイルが非常に長く、ファイルの先頭に近い行を選択すると、大量の出力が端末ウィンドウに送信されることになります。その場合は、 tail からの出力を less にパイプするのが合理的です。

テール +440 リスト-1.txt

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

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

尾部 +20440 リスト-1.txt 

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

末尾のあるバイトの使用

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

テール -c 93 リスト-2.txt

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

 tail -c +351053 list-e.txt 

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

テールへのパイピング

先ほど、 tail からの出力を less にパイプしました。他のコマンドからの出力を tail にパイプすることもできます。

変更時間が最も古い 5 つのファイルまたはフォルダーを特定するには、 ls -t (変更時間による並べ替え) オプションを使用し、出力を tail にパイプします。

 ls -tl |尻尾-5

head コマンドは 、ファイルの先頭からのテキスト行をリストします 。これを tail と組み合わせて、ファイルのセクションを抽出できます。ここでは、 head コマンドを使用してファイルから最初の 200 行を抽出しています。これは tail にパイプ処理され、最後の 10 行が抽出されます。これにより、191 行目から 200 行目までが表示されます。つまり、最初の 200 行のうち最後の 10 行は次のようになります。

 head -n 200 list-1.txt |尻尾-10

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

 ps 補助 |ソート -nk +4 |尻尾-5

それを詳しく見てみましょう。

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

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

sort コマンドは、 ps からの 出力を並べ替えます sort で使用するオプションは次のとおりです。

  • n : 数値順に並べ替えます。
  • k +4 : 4 列目でソートします。

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

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

tail を使用してファイルをリアルタイムで追跡する

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

 tail -f geek-1.log

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

出力を調整して、特定の関連性または関心のある行のみを含めることができます。ここでは grep 使用して、「average」 という単語を含む行のみを表示しています

 tail -f geek-1.log | grep 平均

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

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

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

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

 tail -f -s 5 geek-1.log

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

複数のファイルに追加されたテキストを追跡する場合、テキストがどのログ ファイルからのものであるかを示すヘッダーを非表示にすることができます。これを行うには、 -q (静か) オプションを使用します。

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

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

尾部にはまだ価値がある

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

systemd 状況を変えたかもしれませんが、1 つのことを実行し、それをうまく実行するという Unix の哲学に準拠した従来のユーティリティの余地はまだあります。

Linuxコマンド

ファイル

tar pv cat tac chmod grep diff sed ar man pushd popd fsck testdisk seq fd pandoc cd $PATH awk join jq fold uniq journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · パッチ · 変換 · rclone · シュレッド · srm · scp · gzip · chattr · カット · 検索 · umask · wc · tr

プロセス

エイリアス · スクリーン · トップ · ナイス · renice · 進行状況 · strace · systemd · tmux · chsh · 履歴 · at · バッチ · フリー · what · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · タイムアウト · ウォール · はい · キル · スリープ · sudo · su · タイム · groupadd · usermod · グループ · lshw · シャットダウン · 再起動 · 停止 · パワーオフ · パスワード · lscpu · crontab · 日付 · bg · fg · pidof · nohup · pmap

ネットワーキング

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

「 Linux で tail コマンドを使用する方法」に関するベスト動画選定!

【Linux入門】初心者向け!Linuxの基本的なコマンド操作を学ぼう!  〜 Ubuntu 環境で実演〜
【Linuxコマンドの基本02】一行で書くプログラム ワンライナー (この動画で解説してあるコマンド:grep sort uniq awk tee ps)