less/more/tail でログを読む - ページャ徹底活用

less/more/tail でログを読む - ページャ徹底活用

ログって怖くない!まずは読んでみよう

リナ: ライニー先輩、「ログを確認して」って言われたんですけど、ログファイルって何万行もあってどうやって読めばいいんですか?
ライニー先輩: それは less コマンドの出番だよ!cat でドバッと全部出すんじゃなくて、ページをめくるように読めるんだ。

ログファイルは長い。cat で開いたら画面が流れて終わる。

そこで登場するのがページャコマンドlessmoretail の3つを覚えれば、どんな長いファイルも怖くない。

less の基本 - ページャの王様

リナ: less って名前が面白いですね。cat より少ない?
ライニー先輩: 「less is more(少ない方が豊か)」って言葉から来てるんだよ。more というコマンドがすでにあったから、それより高機能なのに less って名付けたんだ。
リナ: 逆じゃないですか!
ライニー先輩: Linux あるある(笑)

less を起動する

less /var/log/syslog
Nov 1 10:00:01 myserver systemd[1]: Started Daily apt download activities.
Nov 1 10:00:23 myserver kernel: [12345.678] eth0: renamed from veth1234
Nov 1 10:00:30 myserver sshd[1234]: Accepted publickey for user from 192.168.1.1
...

ファイルが開いたら、キーボードで操作する。

less の基本操作

キー 動作
スペース / f 次のページ
b 前のページ
/ j 1行下
/ k 1行上
G 最後の行へジャンプ
g 最初の行へジャンプ
q 終了
/キーワード 前向き検索
?キーワード 後ろ向き検索
n 次の検索結果
N 前の検索結果

とりあえず覚える 3 つ

  • スペース:次のページ
  • q:終了
  • /エラー:「エラー」という文字を検索

less で検索する

リナ: ログって長くて、エラーがどこにあるか探せません…
ライニー先輩: / を押してキーワードを入力すれば検索できるよ!入力して Enter を押すと、その文字が含まれる行にジャンプするんだ。
less /var/log/syslog

less が開いたら /error と入力して Enter を押す。

「error」を含む行にジャンプし、n で次のヒット、N で前のヒットに移動できる。

less は検索結果をハイライト表示してくれるので、長いログでもエラー箇所がすぐに見つかる。

more の基本 - シンプルなページャ

リナ: more コマンドも似たようなものですか?
ライニー先輩: more はもっとシンプル。「もっと見る」ってスペースを押すだけ。ただし後ろには戻れないのが弱点だよ。
more /var/log/syslog

more では:

キー 動作
スペース 次のページ
Enter 1行進む
q 終了

more は前のページに戻れない。すでに読んだ部分を確認したい場合は less を使おう。

less と more の使い分け

リナ: じゃあ less だけ覚えれば more はいらないですか?
ライニー先輩: 基本的にはそう!でも more はシステムによっては less がインストールされていない場合に重宝するし、シンプルな操作で十分なこともある。迷ったら less を使えば間違いないよ。
比較 less more
前に戻る できる できない
検索 できる(ハイライトあり) 基本機能のみ
パイプ対応 できる できる
デフォルト搭載 多くの環境 ほぼすべての環境

結論:迷ったら less を使う。

tail の基本 - ファイルの末尾を見る

リナ: ログって、新しいものは後ろに追記されていくんですよね?
ライニー先輩: そう!だから tail コマンドでファイルの末尾(最新部分)だけ表示するのが便利なんだ。デフォルトで最後の10行を表示するよ。
tail /var/log/syslog
Nov 1 11:59:43 myserver systemd[1]: Starting Session 42 of User user.
Nov 1 11:59:43 myserver systemd-logind[456]: New session 42 of user user.
Nov 1 11:59:44 myserver sshd[5678]: session opened for user user by (uid=0)
Nov 1 11:59:58 myserver systemd[1]: session-42.scope: Deactivated successfully.

行数を指定する

tail -n 50 /var/log/syslog

-n 50 で最後の50行を表示できる。-n は省略して -50 とも書ける。

tail -50 /var/log/syslog

head コマンドはファイルの先頭を表示する。tailhead はセットで覚えよう。

tail -f でリアルタイム監視

リナ: ログって、リアルタイムで増えていくものですよね?それを追いかけたいときはどうすればいいですか?
ライニー先輩: tail -f がまさにそれ!-f は「follow(追いかける)」の意味で、ファイルに追記されるたびに画面に表示してくれるんだ。
リナ: おお!それは便利ですね!
ライニー先輩: Web サーバのアクセスログを監視したり、デプロイ中のアプリログを追いかけたりするときに大活躍だよ。
tail -f /var/log/nginx/access.log
192.168.1.1 - - [01/Jun/2026:12:00:01 +0900] "GET / HTTP/1.1" 200 1234
192.168.1.2 - - [01/Jun/2026:12:00:05 +0900] "GET /api/users HTTP/1.1" 200 5678
192.168.1.1 - - [01/Jun/2026:12:00:07 +0900] "POST /api/login HTTP/1.1" 200 89

Ctrl+C で終了する。

tail -f は終了操作(Ctrl+C)を忘れるとずっと動き続ける。終わったら必ず Ctrl+C で止めよう。

複数ファイルを同時に監視する

tail -f /var/log/nginx/access.log /var/log/nginx/error.log

複数のファイルを指定すると、どのファイルに追記があったかファイル名付きで表示してくれる。

==> /var/log/nginx/access.log <==
192.168.1.3 - - [01/Jun/2026:12:01:00 +0900] "GET /image.png HTTP/1.1" 200 9876

==> /var/log/nginx/error.log <==
2026/06/01 12:01:01 [error] 1234#0: *5 No such file or directory

実践 - エラーログを調べる

リナ: じゃあ、サーバでエラーが起きたとき、どうやってログを調べればいいですか?
ライニー先輩: 手順を一緒に見てみよう。まず tail -n 100 で最新100行を確認して、それから less で詳しく調べるのがおすすめだよ。

ステップ 1 - 最新のログを確認

tail -n 100 /var/log/syslog

ステップ 2 - エラーが多そうなら less で検索

less /var/log/syslog

less が開いたら /error/failed で検索する。

ステップ 3 - リアルタイムで状況を追う

アプリを再起動したり操作したりしながら、ログをリアルタイムで確認したい場合:

tail -f /var/log/syslog

grep と組み合わせる

パイプで grep と組み合わせると特定のキーワードだけ絞り込める。

tail -f /var/log/syslog | grep -i error

「error」(大文字小文字問わず)を含む行だけリアルタイムで表示する。

次に読む