日志查询四剑客head tail less more使用说明

Linux-Log-HeadTailLessMore

一、问题概述

查看日志时不要使用 catvimvi 命令。未来的日志文件可能非常大(如40G或以上)。如果使用 cat 查看,会刷屏且无法停止;如果使用 vi/vim 查看,会将整个文件从磁盘加载到内存,占用大量系统资源,容易导致内存不足。

推荐使用资源占用较少的命令查看日志:

1
2
3
4
head
tail
less
more

二、日志查询命令使用

1. head显示文件的前几行

head选项 解释
-n num 显示头num行,默认显示头10行。
-c num 显示前num个字节
-q 不显示文件名标题(多文件时)
-v 总是显示文件名标题

实例:

显示/etc/passwd 的前5行
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# head -5 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

# head -n 5 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

# head -n5 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
显示文件前100个字节
1
head -c 100 /var/log/messages

提示:

  • 如果 -5 报错或无法使用,则使用 -n 5 形式
  • 查看多个文件时,可以使用 -q 选项避免文件名干扰

2. tail显示文件的后几行

tail选项 解释
-n num 显示最后num行,默认显示最后10行。
-f follow显示文件末尾的实时更新(一般用于查看日志)
-F 同-f,但会跟踪文件重命名/重建(推荐用于日志轮转)
-c num 显示最后num个字节
-s sec 与-f结合使用,设置刷新间隔秒数

实例:

显示/etc/passwd 的后5行
1
2
3
4
5
6
7
8
9
10
11
12
13
# tail -5 /etc/passwd
polkitd:x:999:997:User for polkitd:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
xiao:x:1000:1000:xiao:/home/xiao:/bin/bash

# tail -n5 /etc/passwd
polkitd:x:999:997:User for polkitd:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
xiao:x:1000:1000:xiao:/home/xiao:/bin/bash
查看/var/log/secure末尾的实时更新(推荐方式)
1
2
3
4
# tail -F /var/log/secure
Apr 7 10:39:49 localhost polkitd[662]: Loading rules from directory /etc/polkit-1/rules.d
Apr 7 10:39:49 localhost polkitd[662]: Loading rules from directory /usr/share/polkit-1/rules.d
Apr 7 10:39:49 localhost polkitd[662]: Finished loading, compiling and executing 2 rules
带刷新间隔的实时监控
1
2
3
4
5
6
7
8
9
10
11
tail -f -s 2 /var/log/messages  # 每2秒刷新一次
Apr 8 14:28:53 localhost systemd: Time has been changed
Apr 8 14:28:53 localhost chronyd[665]: System clock wrong by 833.112653 seconds, adjustment started
Apr 8 14:28:53 localhost chronyd[665]: System clock was stepped by 833.112653 seconds
Apr 8 14:28:54 localhost chronyd[665]: Selected source 139.199.215.251
Apr 8 14:28:58 localhost systemd: Created slice User Slice of root.
Apr 8 14:28:58 localhost systemd-logind: New session 1 of user root.
Apr 8 14:28:58 localhost systemd: Started Session 1 of user root.
Apr 8 14:29:17 localhost systemd-logind: New session 2 of user root.
Apr 8 14:29:17 localhost systemd: Started Session 2 of user root.
Apr 8 14:31:05 localhost chronyd[665]: Source 193.182.111.143 replaced with 116.203.151.74

提示:

  • 查看日志时,重点关注关键线索如:failedfailureerrorexception
  • 对于日志轮转(logrotate)的情况,使用 -F-f 更可靠
  • 结合grep过滤关键信息:tail -f /var/log/secure | grep "Failed password"

3. less按页显示文件内容,并且可以进行搜索

3.1 基本查看文件

1
less /var/log/messages
  • 查看系统日志文件 /var/log/messages,按 q 退出。

3.2 搜索功能

  • 向前搜索(从当前位置向下):

    • 输入 / 后跟关键词(如 error),按 Enter
    • n 跳转到下一个匹配项,N 跳转到上一个匹配项
  • 向后搜索(从当前位置向上):

    • 输入 ? 后跟关键词(如 warning),按 Enter
  • 正则表达式搜索

    • 使用 /^Error: 搜索以”Error:”开头的行

3.3 导航操作

  • 翻页

    • 空格键或 f:向下翻一页
    • b:向上翻一页
    • d:向下翻半页,u:向上翻半页
  • 行导航

    • 回车键或 e:向下移动一行
    • yk:向上移动一行
    • j:向下移动一行

3.4 跳转功能

  • g:跳转到文件开头
  • G:跳转到文件末尾
  • 10g:跳转到第10行
  • 50%:跳转到文件50%位置

3.5 显示控制

  • -N:显示行号
    1
    less -N /etc/nginx/nginx.conf
  • -i:忽略搜索时的大小写
  • -S:截断长行(不换行),用左右箭头水平滚动

3.6 标记位置

  • m + 字母:标记当前位置(如 ma
  • ' + 字母:返回标记位置(如 'a

3.7 文件操作

  • :e:打开新文件
  • :n:查看下一个文件(多文件时)
  • :p:查看上一个文件(多文件时)

3.8 查看压缩文件

1
zless /var/log/messages-20230101.gz

或直接使用less查看(某些系统支持):

1
less /var/log/messages-20230101.gz

3.9 其他实用技巧

  • &pattern:只显示匹配行(如 &error
  • v:进入vi编辑器(需要配置)
  • -M:显示更详细的状态行
  • -J:显示状态栏中的文件名

4. more按页显示文件内容,到达最后一行就退出

4.1 基本查看文件

1
more /var/log/messages
  • 分页显示 /var/log/messages 文件内容,按 空格键 向下翻页,按 q 退出。

4.2 从指定行开始查看

1
more +10 /var/log/secure
  • 从第 10 行开始显示文件内容。

4.3 搜索关键字

  • 向前搜索
    1. 进入 more 后,输入 /keyword(如 /error),按 Enter
    2. n 跳转到下一个匹配项

4.4 控制翻页

  • 翻页操作
    • 空格键:向下翻一页
    • Enter:向下翻一行
    • bCtrl+B:向上翻一页
    • qCtrl+C:退出
    • =:显示当前行号

4.5 显示控制

1
more -d /var/log/messages
  • -d:显示提示信息(”Press space to continue…”)
  • -s:压缩连续空行为一行
  • -p:不滚屏,清屏显示下一页

4.6 多文件操作

1
more file1 file2
  • :n:下一个文件
  • :p:上一个文件

4.7 环境变量

可以设置环境变量改变more行为:

1
export MORE="-s -d"

三、命令特性对比与选择建议

1. 特性对比

特性 head tail less more
支持分页
支持实时更新
支持搜索 ✅(向前)
支持压缩日志 ✅(zless)
支持跳转 ✅(+num) ✅(g/G) ✅(+行号)
支持行号显示 ✅(-N) ❌(-n 不通

2.选择建议

命令 特点 适用场景
head 只显示开头部分,速度快 快速查看文件开头部分
tail 只显示结尾部分,支持实时监控 查看最新日志、监控日志更新
less 功能强大,支持搜索、导航、跳转,不加载整个文件 详细查看大文件,需要搜索和导航
more 基础分页功能,功能比less少 简单分页查看,系统可能没有less时使用

推荐选择顺序

  1. 查看日志最新内容 → tail -F

  2. 查看日志开头内容 → head

  3. 详细查看日志内容 → less

  4. 基础分页查看 → more

四、高级技巧

1. 组合使用示例

1
2
3
4
5
6
7
8
# 查看包含"error"的行及其前后5行
grep -A5 -B5 "error" /var/log/messages | less

# 实时监控多个日志文件
tail -F /var/log/{messages,secure,nginx/error.log}

# 查看最近修改的日志文件
ls -lt /var/log | head

2. 颜色高亮

1
2
3
4
5
# 使用grep高亮关键词
less /var/log/messages | grep --color=always "error" | less -R

# 或者安装ccze工具
tail -f /var/log/syslog | ccze -A

3. 日志时间范围查看

1
2
# 查看最近10分钟的日志
sed -n "/$(date -d '10 minutes ago' '+%b %_d %H:%M')/,\$p" /var/log/messages | less