在linux系统的日常使用中,查看日志文件是开发者和运维人员的高频操作,很多时候不需要浏览整个日志内容,只需要获取最后几行的最新记录就能快速定位问题,比如服务启动失败的最新报错、接口调用的最新返回结果等。不同的场景有不同的命令选择,下面逐一介绍常用的方法。

一、使用tail命令查看日志最后几行
tail是linux系统中专门用于查看文件末尾内容的命令,也是查看日志最后几行最常用的工具,默认情况下会显示文件的最后10行内容。
1. 基础用法
直接查看指定日志文件的最后10行,命令格式如下:
# 查看/var/log/syslog的最后10行 tail /var/log/syslog
2. 指定显示行数
如果需要查看指定行数的最后内容,可以添加-n参数,后面跟上需要显示的行数:
# 查看日志文件的最后5行 tail -n 5 /var/log/syslog # 也可以用简写形式,省略n直接加数字 tail -5 /var/log/syslog
3. 实时跟踪日志新增内容
如果需要持续查看日志的最新追加内容,比如监控服务运行时的实时日志,可以添加-f参数,命令会持续输出日志的新增内容,直到手动按Ctrl+C退出:
# 实时跟踪日志的最后几行并持续输出新增内容 tail -f -n 5 /var/log/syslog
二、使用head命令间接查看最后几行
head命令默认用于查看文件的开头内容,结合其他命令也可以实现查看最后几行的效果,适合熟悉管道操作的用户使用。
思路是先通过tac命令把文件内容倒序,再用head取前N行,最后再用tac倒序回来,就能得到原文件的最后N行:
# 查看日志最后5行,tac命令用于倒序输出文件内容 tac /var/log/syslog | head -n 5 | tac
三、使用sed命令查看最后几行
sed是流编辑器,也可以通过行号匹配的方式获取文件的最后几行,适合习惯使用sed处理文本的用户。
sed的行号匹配规则中,$代表最后一行,所以可以用$ - N的方式匹配最后N行:
# 查看日志文件的最后5行,N为需要显示的行数,这里N=5 sed -n '$-4,$p' /var/log/syslog
说明:这里的$-4代表倒数第5行,加上$最后一行,刚好是最后5行,如果需要最后N行,就写成$-(N-1),$p的形式。
四、各方法对比
下面是三种常用方法的特性对比,用户可以根据实际需求选择:
| 方法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| tail命令 | 语法简单,支持实时跟踪,执行效率高 | 无明显缺点 | 绝大多数查看日志最后几行的场景 |
| head+tac组合 | 逻辑清晰,适合理解管道操作原理 | 命令较长,执行效率略低于tail | 熟悉管道操作,需要灵活组合命令的场景 |
| sed命令 | 可以结合其他sed文本处理规则一起使用 | 语法相对复杂,行号计算容易出错 | 已经在使用sed处理日志,需要同时做文本过滤的场景 |
注意事项
- 查看日志文件需要有对应的文件读取权限,如果没有权限会提示权限不足,可以切换root用户或者使用sudo执行命令。
- 如果日志文件正在被写入,使用tail -f参数可以实时看到新增内容,适合排查正在运行的服务的问题。
- 如果日志文件非常大,tail命令的执行速度远快于其他读取整个文件再处理的命令,优先选择tail查看末尾内容。