日志查询四剑客head tail less more使用说明
一、问题概述 查看日志时不要使用 cat
、vim
或 vi
命令。未来的日志文件可能非常大(如40G或以上)。如果使用 cat
查看,会刷屏且无法停止;如果使用 vi/vim
查看,会将整个文件从磁盘加载到内存,占用大量系统资源,容易导致内存不足。
推荐使用资源占用较少的命令查看日志:
二、日志查询命令使用 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 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 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 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 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 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 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 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
提示:
查看日志时,重点关注关键线索如:failed
、failure
、error
、exception
等
对于日志轮转(logrotate)的情况,使用 -F
比 -f
更可靠
结合grep过滤关键信息:tail -f /var/log/secure | grep "Failed password"
3. less按页显示文件内容,并且可以进行搜索 3.1 基本查看文件
查看系统日志文件 /var/log/messages
,按 q
退出。
3.2 搜索功能
向前搜索 (从当前位置向下):
输入 /
后跟关键词(如 error
),按 Enter
按 n
跳转到下一个匹配项,N
跳转到上一个匹配项
向后搜索 (从当前位置向上):
输入 ?
后跟关键词(如 warning
),按 Enter
正则表达式搜索 :
使用 /^Error:
搜索以”Error:”开头的行
3.3 导航操作
翻页 :
空格键或 f
:向下翻一页
b
:向上翻一页
d
:向下翻半页,u
:向上翻半页
行导航 :
回车键或 e
:向下移动一行
y
或 k
或 ↑
:向上移动一行
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 基本查看文件
分页显示 /var/log/messages
文件内容,按 空格键
向下翻页,按 q
退出。
4.2 从指定行开始查看 1 more +10 /var/log/secure
4.3 搜索关键字
向前搜索 :
进入 more
后,输入 /keyword
(如 /error
),按 Enter
按 n
跳转到下一个匹配项
4.4 控制翻页
翻页操作 :
空格键
:向下翻一页
Enter
:向下翻一行
b
或 Ctrl+B
:向上翻一页
q
或 Ctrl+C
:退出
=
:显示当前行号
4.5 显示控制 1 more -d /var/log/messages
-d
:显示提示信息(”Press space to continue…”)
-s
:压缩连续空行为一行
-p
:不滚屏,清屏显示下一页
4.6 多文件操作
4.7 环境变量 可以设置环境变量改变more行为:
三、命令特性对比与选择建议 1. 特性对比
特性
head
tail
less
more
支持分页
❌
❌
✅
✅
支持实时更新
❌
✅
❌
❌
支持搜索
❌
❌
✅
✅(向前)
支持压缩日志
❌
❌
✅(zless)
❌
支持跳转
❌
✅(+num)
✅(g/G)
✅(+行号)
支持行号显示
❌
❌
✅(-N)
❌(-n 不通
2.选择建议
命令
特点
适用场景
head
只显示开头部分,速度快
快速查看文件开头部分
tail
只显示结尾部分,支持实时监控
查看最新日志、监控日志更新
less
功能强大,支持搜索、导航、跳转,不加载整个文件
详细查看大文件,需要搜索和导航
more
基础分页功能,功能比less少
简单分页查看,系统可能没有less时使用
推荐选择顺序 :
查看日志最新内容 → tail -F
查看日志开头内容 → head
详细查看日志内容 → less
基础分页查看 → more
四、高级技巧 1. 组合使用示例 1 2 3 4 5 6 7 8 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 less /var/log/messages | grep --color=always "error" | less -R tail -f /var/log/syslog | ccze -A
3. 日志时间范围查看 1 2 sed -n "/$(date -d '10 minutes ago' '+%b %_d %H:%M') /,\$p" /var/log/messages | less