Linux 日志查看技巧:从 tail 到 journalctl 的实用入门

举报
yd_260072176 发表于 2026/10/23 01:17:08 2026/10/23
【摘要】 介绍 Linux 日志查看的四个核心工具:tail 实时跟踪、less 交互翻阅、grep 精准过滤、journalctl 统一查询,附一个网站 502 排障小案例,帮助新手快速建立日志排查思路。

为什么要学会看日志

线上服务出问题时,第一反应往往是“去看日志”。日志是系统和应用留下的“黑匣子”记录:什么时候发生了什么、是谁触发的、错在哪里,答案大多藏在日志里。掌握几个核心命令,能让你在排障时少走很多弯路。

一、tail:只看最新内容

tail 默认显示文件最后 10 行,配合 -f 参数可以实时跟踪新写入的内容,这是排障时最常用的姿势:

查看文件末尾 20 行:tail -n 20 /var/log/syslog
实时跟踪日志输出,按 Ctrl+C 退出:tail -f /var/log/nginx/error.log
同时跟踪多个文件:tail -f /var/log/nginx/access.log /var/log/nginx/error.log

小技巧:-F(大写)比 -f 更“执着”,即使日志文件被轮转(rotate)重建,它也会继续跟踪新文件,适合长期观察。

二、less:交互式翻阅大文件

当日志文件有几百 MB 时,直接 cat 会刷屏。less 支持前后翻页和搜索:less /var/log/syslog。进入后常用按键:/ 输入关键字搜索、n 跳到下一个匹配、N 上一个、g 回到开头、G 跳到末尾、q 退出。加上 +F 参数,less 也能像 tail -f 一样实时跟踪:less +F /var/log/syslog,按 Ctrl+C 可切换回浏览模式。

三、grep:从海量日志里捞针

日志量大时,先过滤再查看,grep 的几个高频用法:

只看 ERROR 行并显示行号:grep -n "ERROR" app.log
忽略大小写并统计出现次数:grep -ci "timeout" app.log
看错误行及其前后 5 行上下文:grep -C 5 "ERROR" app.log
反向过滤,排除健康检查的心跳日志:grep -v "healthcheck" access.log | less

把 grep 和 tail -f 组合起来,就是实时错误监控:tail -f app.log | grep --line-buffered "ERROR"。

四、journalctl:systemd 时代的统一入口

现代 Linux 发行版大多用 systemd 管理服务,journalctl 可以查询所有服务的日志:

查看某个服务的日志:journalctl -u nginx.service
实时跟踪:journalctl -u nginx.service -f
只看今天的报错:journalctl -p err --since today
按时间倒序,先看最新的:journalctl -u docker.service -r

五、一个完整的排障小案例

假设网站突然返回 502,可以这样一步步缩小范围:第一步,tail -n 50 /var/log/nginx/error.log 看 Nginx 报了什么错;第二步,如果是上游超时,用 journalctl -u backend.service --since "10 minutes ago" 看后端服务最近的日志;第三步,用 grep -n "OutOfMemory" /var/log/syslog 确认是不是内存不足导致进程被杀;第四步,找到根因后,用 grep -C 10 把关键错误的前后上下文保存下来,方便复盘。

小结

想看最新内容用 tail -n/-f;文件太大用 less 翻页加搜索;日志太多用 grep 先过滤;systemd 服务用 journalctl -u/-f/-p。把这四个工具练熟,日常 80% 的日志排查场景都能覆盖。建议把常用组合记成 shell 别名,排障效率会再上一个台阶。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。