下载工作台
Linux 与 Shell 入门

日志查看与 journalctl

试读上半部分 · 解锁后可读全文

第 10 章 · 日志查看与 journalctl

本章目标:分清 systemd 日志(journalctl)应用文本日志(文件 + grep);会按服务名、时间、级别过滤;走完 api-go-demo 一次完整排障五步法;理解日志级别与 JSON 结构化日志。

学时建议:4~5 小时(含 2.5 小时跟练)

前置:完成 linux-shell ch05(systemd)ch04(grep)ch09(磁盘)


10.1 场景说明:status 是绿的,用户说还是 500

测试环境 api-go-demo

  • systemctl status api-go-demoactive (running)
  • curl healthz → 超时或 500
  • 运营贴了一条 request_id=req-1003 的报错

老手不会先重启,而是问:日志在哪、写什么级别、能不能按 request_id 搜

Linux 上常见两条线

① systemd / journalctl     → 服务启停、panic、标准输出/err
② 应用文件日志              → /var/log/... 或 ~/dev-workspace/logs/api.log

ch04 已在文件里 grep;本章补上 journalctl,并把它们串成一套流程。


10.2 学完你能

能力验收
两类日志说清何时用 journalctl、何时 grep 文件
journalctl-u-f--since-p err-b
业务日志tail -f + grep ERROR(ch04 复习)
级别DEBUG/INFO/WARN/ERROR 生产怎么用
五步法status → journal → app log → request_id → 修复提交
磁盘日志暴涨先 df(ch09)

10.3 两类日志对照(先建立地图)

类型谁写的你怎么读典型内容
journal(systemd)受 systemd 托管的服务 stdout/stderrjournalctl -u 服务名启动失败、panic、未配置 file 时的 print
syslog 文本rsyslog 等/var/log/sysloggrep系统综合消息
应用日志文件程序自己写文件tail/grep ch04access、ERROR、request_id、slug

ch05shop-demo-heartbeatExecStart 是脚本 echo,输出就在 journal 里。

api-go-demo 生产常见:文件 /var/log/api-go-demo/app.log + 崩溃信息在 journal。


10.4 跟练:journalctl 基础

步骤 1 — 最近 30 条系统日志

journalctl --no-pager -n 30

你应该看到:每行前有时间戳主机名进程/unit 名,后面是消息。

读懂一行(形态示例):

Aug 20 10:01:02 hostname sshd[1234]: Accepted publickey for ubuntu...

步骤 2 — 只看 ssh 服务(ch05/ch08 相关)

journalctl -u ssh --no-pager -n 15

-u = unit 名,与 systemctl status ssh 里的名字一致(有时叫 ssh.service)。

步骤 3 — 实时跟踪(类似 tail -f)

journalctl -u ssh -f

另开终端 SSH 登录一次,应看到新行滚动。Ctrl+C 退出 -f

步骤 4 — 时间范围

journalctl --since "1 hour ago" --no-pager | tail -20
journalctl --since today --no-pager | wc -l

步骤 5 — 只看错误级别及以上

journalctl -p err --since today --no-pager | head -20

优先级:emerg alert crit err warning notice info debug-p err 含 err 及更严级别。

步骤 6 — 本次开机以来

journalctl -b --no-pager -n 10

为什么 服务器刚重启后出问题:-b 排除上一轮 boot 的旧噪音。


10.5 journalctl 选项速查(贴笔记)

选项作用示例场景
-u UNIT指定服务api-go-demo、nginx
-f跟踪新日志复现 bug 时盯着
--since / --until时间窗「出问题那 10 分钟」
-p err优先级过滤告警巡检
-b当前启动重启后排查
--no-pager直接输出脚本里用
-n 50最后 N 行快速浏览

10.6 跟练:ch05 heartbeat 的 journal

ch05 仍启用 shop-demo-heartbeat

systemctl status shop-demo-heartbeat
journalctl -u shop-demo-heartbeat -n 10 --no-pager
journalctl -u shop-demo-heartbeat -f

你应该看到shop-demo heartbeat ok 周期性出现。

若 unit 不存在:用 ssh10.4 即可。


10.7 跟练:应用文本日志(复习 ch04)

步骤 1 — 确认 api.log 存在

ls -lh ~/dev-workspace/logs/api.log
wc -l ~/dev-workspace/logs/api.log

以下内容需解锁后阅读

试读已结束。解锁本章 ¥5.00,或开通年度会员畅读全部教程。
年度会员 ¥199.00/年; 小紫 AI 工作台有效会员 ¥99.00/年

正文仅在服务端鉴权后下发,未付费无法获取下半部分内容。