less/more/tail でログを読む - ページャ徹底活用
ログって怖くない!まずは読んでみよう
リナ: ライニー先輩、「ログを確認して」って言われたんですけど、ログファイルって何万行もあってどうやって読めばいいんですか?
ライニー先輩: それは
less コマンドの出番だよ!cat でドバッと全部出すんじゃなくて、ページをめくるように読めるんだ。ログファイルは長い。cat で開いたら画面が流れて終わる。
そこで登場するのがページャコマンド。less・more・tail の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 コマンドはファイルの先頭を表示する。tail と head はセットで覚えよう。
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」(大文字小文字問わず)を含む行だけリアルタイムで表示する。