【Bash講座 第5回】巨大なログファイルも怖くない!テキスト閲覧の極意
こんにちは!「リナックス先生」です。
前回は、リダイレクトとパイプを使ってデータを保存・加工する方法を学びました。
コウ君、サーバーのログファイルなどは見れるようになった?
先生!大変です!
エラーログの中身を見ようと思って cat error.log って打ったら、画面に凄まじい勢いで文字が流れ始めて、止まらなくなっちゃいました!
Ctrl+C を連打してやっと止まりましたけど…心臓に悪いです。
あちゃー、やっちゃったわね。
Linuxのログファイルは何万行、何百万行になることもあるから、不用意に全表示するとターミナルがフリーズすることもあるのよ。
今回は、そんな巨大なファイルでも安全・快適に読むための「4つの神器(cat, less, head, tail)」を伝授するわ!
第5回となる今回は、テキストファイルの中身を確認するコマンドたちを特集します。
これらを使い分けることで、必要な情報に最短でたどり着けるようになりますよ。
本講座のカリキュラム(全12回)
AlmaLinux 9 (RHEL 9互換) 環境を前提に、基礎から応用までステップバイステップで進めます。
- Bash入門編:シェルとカーネルの関係、CUIの哲学、環境構築
- ファイル操作の極意:絶対パス・相対パスと「ワイルドカード」の魔術
- 権限(パーミッション)とユーザー:chmod, chown, sudoの仕組みを完全理解
- 入出力リダイレクトとパイプ:Linuxの真骨頂!コマンド同士を連携させる技術
- 【今回】テキスト処理の基本:cat, head, tail, less…ファイルの中身を覗く道具たち
- 最強のエディタ「Vi/Vim」入門:サーバー内でテキストを編集する必須スキル
- シェルスクリプトの第一歩:ファイルにまとめて自動実行!変数と引数の基礎
- 条件分岐(if文):サーバーの状態を見て「判断」できるスクリプトを作る
- 繰り返し処理(for/while文):面倒な単純作業を1秒で終わらせるループ処理
- テキスト処理の応用:grep, sed, awk…ログ解析の達人になるための三種の神器
- 実践・自動化スクリプト:バックアップと監視を自動化し、Cronで定期実行する
- 総仕上げ:自作スクリプトの集大成と、エンジニアとしての歩き方
1. 基本中の基本:cat(キャット)
最も有名なコマンドですが、実は「中身を見る」ためだけのコマンドではありません。
本来の意味は “Concatenate”(連結する) です。
基本的な使い方
短いファイルの中身をサッと確認するのに向いています。
# ファイルの中身を表示 [root@localhost ~]# cat /etc/hostname localhost.localdomain
便利なオプション:行番号を表示 (-n)
設定ファイルなどを誰かに説明する時、「10行目を見て」と言えると便利ですよね。
[root@localhost ~]# cat -n /etc/resolv.conf
1 # Generated by NetworkManager
2 nameserver 8.8.8.8
本来の使い方:ファイルを連結する
名前の通り、複数のファイルを「連結」して表示(または保存)することができます。
これが cat の真の力です。
# file1 と file2 を連結して画面に出す [root@localhost ~]# cat file1.txt file2.txt # 連結した結果を new_file.txt に保存する(リダイレクトとの合わせ技) [root@localhost ~]# cat part1.csv part2.csv > all_data.csv
2. 巨大ファイルも怖くない:less(レス)
コウ君が失敗したのは、巨大なファイルを cat で一気に流そうとしたからです。
長い文章を読むときは、「ページャー(Pager)」と呼ばれるツールを使います。
昔は more というコマンドが使われていましたが、今はより高機能な less が標準です。
「less is more(より少ないことは、より豊かなこと)」という格言が名前の由来よ。less はファイルを全部読み込まずに少しずつ表示するから、何GBもある巨大ファイルでも一瞬で開けるの。
基本操作
[root@localhost ~]# less /var/log/messages
起動すると画面が切り替わります。以下のキー操作を覚えておきましょう。
| キー | 動作 |
|---|---|
| Space / f | 次のページへ進む |
| b | 前のページに戻る (Back) |
| j / Enter | 1行進む |
| k | 1行戻る |
| G (Shift+g) | ファイルの末尾(一番最後)へジャンプ |
| g | ファイルの先頭へジャンプ |
| q | 終了する (Quit) |
検索機能
less の中で、特定のキーワードを探すこともできます。
/keyword:キーワードを前方検索(Enterで実行)n:次の検索結果へ (Next)N:前の検索結果へ
3. 頭とお尻だけ見たい:head / tail
「ログの最初だけ確認したい」「最新のエラーだけ見たい」という時に、全部開くのは面倒です。
そんな時は「頭 (head)」と「尻尾 (tail)」を使いましょう。
head:先頭を表示
デフォルトでは「最初の10行」を表示します。
# /etc/passwd の先頭10行を表示 [root@localhost ~]# head /etc/passwd # 行数を指定したい時は -n を使う(例:先頭5行) [root@localhost ~]# head -n 5 /etc/passwd
tail:末尾を表示
デフォルトでは「最後の10行」を表示します。
ログファイルは末尾に最新情報が追記されるので、head よりも圧倒的に出番が多いです。
# 最後の20行を表示 [root@localhost ~]# tail -n 20 /var/log/messages
4. 【最重要】リアルタイム監視:tail -f
サーバー管理者が最も愛用する機能の一つがこれです。
「ログが書き込まれる様子をリアルタイムで眺める」ことができます。
映画のハッカーがやってる「画面に文字がダダダダッて流れるやつ」ですか!?
そうそれ!
Webサーバーが動かない時、このコマンドでエラーログを監視しながらブラウザをリロードするの。
そうすると、エラーが出た瞬間にログが表示されるから、原因特定がめちゃくちゃ早くなるわよ。
使い方:-f (follow) オプション
[root@localhost ~]# tail -f /var/log/httpd/access_log
これを実行すると、コマンドは終了せず「待ち状態」になります。
誰かがWebサイトにアクセスすると、そのログがリアルタイムで画面に追加されていきます。
終了するには Ctrl + C を押します。
まとめ:使い分けのポイント
最後に、それぞれのコマンドの使い所を整理しましょう。
| コマンド | こんな時に使う |
|---|---|
| cat | 短い設定ファイルを見る。ファイルを結合する。 |
| less | 長いファイルを見る。キーワード検索したい。 |
| head | CSVファイルのヘッダー(項目名)だけ確認したい。 |
| tail | ログの最新部分(最後)だけ見たい。 |
| tail -f | 【必須】ログをリアルタイムで監視したい。 |
次回予告:禁断の「ファイル編集」へ
第5回は、ファイルの中身を「見る」コマンドたちを解説しました。
特に less と tail -f は、エンジニアの毎日の相棒です。ぜひ手に馴染ませてください。
次回は、ついにサーバー上でファイルを「編集」する方法を学びます。
Linux標準にして最強のテキストエディタ「Vi / Vim(ヴィム)」の登場です。
「終了の仕方が分からなくてPCを再起動した」という伝説を持つほど癖が強いエディタですが、使いこなせば魔法のように高速に編集できます。
次回までに、tail -f を実行したまま、別のターミナル画面からそのサーバーにログインしてみて。
ログが動く様子が見られて感動するわよ!
▼本講座推奨!AlmaLinux 9がすぐ使えるVPS



コメント