平时在 Linux 上排查问题、看服务状态,最常用的就是翻日志。很多人只会一两个命令,遇到大文件、滚动日志、系统日志就手忙脚乱。今天就用很实在的方式,把我日常最常用的 6 种查看日志尾部内容的方法一次性讲清楚,每条都带上可直接复制的命令示例,服务器、Ubuntu 26.04 都通用,学会这些基本能应付 99% 的日志场景。
第一个必须是 tail,专门用来查看文件末尾,也是最常用的命令。默认直接显示最后 10 行,比如看 Nginx 访问日志:
tail /var/log/nginx/access.log
想看最后 50 行,加 -n 参数:
tail -n 50 /var/log/nginx/error.log
排查问题时最爽的是实时刷新跟着日志走,用 -f
tail -f /var/log/syslog
一边程序输出,一边你实时看,定位问题特别快。
第二个是 head,虽然主要看开头,但经常和 tail 搭配用。比如先确认日志格式对不对:
head /var/log/dpkg.log
简单快速,用来判断文件是不是正常日志、有没有被污染。
第三个是 less,比 cat 好用一万倍,大日志文件用 cat 直接卡死,less 是分页加载,流畅得很。打开文件直接跳到最后面看最新内容:
less /var/log/auth.log
打开后按 G 直接跳到文件末尾,按 PageUp/PageDown 上下翻,按 /关键词 可以搜索,按 q 退出。真正排查问题时比 tail 好用得多。
第四个是 tail + grep 组合过滤,日志太多只想看关键信息,比如错误、关键词,这是最实用的组合。比如只看最近的错误日志:
tail -n 100 /var/log/nginx/error.log | grep error
实时监控并只显示包含关键字的行:
tail -f /var/log/syslog | grep fail
不用在一堆无关信息里瞎找。
第五个是 journalctl,现在 systemd 系统都用它看系统和服务日志,想看最新日志直接倒序:
journalctl -r
实时滚动看最新系统日志:
journalctl -f
只看某个服务,比如查看 Docker 最近日志:
journalctl -u docker -n 50
精准定位服务问题,比翻文本日志舒服太多。
第六个是 multitail,适合同时盯多个日志文件,比如同时看应用日志 + Nginx 日志。系统一般不自带,装一下就行:
sudo apt install multitail
同时监控两个文件:
multitail /var/log/nginx/access.log /var/log/nginx/error.log
分屏展示、实时滚动,哪个日志出问题一眼就能看到。
其实这 6 种方法已经覆盖绝大多数场景:快速看尾部用 tail,仔细翻阅用 less,过滤关键字用 grep 组合,系统服务日志用 journalctl,多日志同时盯用 multitail。不用背一堆复杂参数,把这些常用命令练熟,在 Linux 上看日志、查问题基本就没什么压力了。