跳到主要内容

Linux journalctl 日志查看

很多现代 Linux 发行版使用 systemd 管理服务,同时使用 journald 收集系统日志。journalctl 就是查看这些日志的主要工具。

如果你排查服务启动失败、网络异常、系统重启原因,journalctl 经常是第一站。

查看所有日志

journalctl

输出会进入分页界面,按键和 less 类似:

  • 空格:下一页。
  • b:上一页。
  • /word:搜索关键词。
  • q:退出。

如果日志很多,不建议从头翻。你可以加过滤条件。

查看本次启动日志

journalctl -b

-b 表示 boot,也就是本次启动。

查看上一次启动日志:

journalctl -b -1

这对于排查“刚才重启前发生了什么”很有帮助。

查看某个服务的日志

查看 SSH 服务日志:

journalctl -u ssh

有些发行版服务名可能是 sshd

journalctl -u sshd

如果你不确定服务名,先用:

systemctl list-units --type=service | grep ssh

实时跟踪日志

journalctl -u ssh -f

-f 表示 follow,会持续显示新日志。按 Ctrl+C 停止。

这和 tail -f 的用途类似,只是日志来源是 systemd journal。

按时间过滤

查看今天的日志:

journalctl --since today

查看最近 30 分钟:

journalctl --since "30 minutes ago"

查看指定时间段:

journalctl --since "2026-07-24 09:00" --until "2026-07-24 10:00"

时间字符串由 systemd 解析。不同语言环境下显示格式可能不同,但上面的形式通常比较稳。

按级别过滤

查看错误及更严重日志:

journalctl -p err

常见级别包括:

级别含义
emerg系统不可用
alert必须立即处理
crit严重错误
err错误
warning警告
notice重要提示
info普通信息
debug调试信息

服务排错时常用:

journalctl -u nginx -p warning

查看内核日志

journalctl -k

这会显示内核相关日志,类似 dmesg 的用途。

排查硬件、驱动、文件系统错误时会用到它。

控制输出格式

只看最近 50 行:

journalctl -n 50

不使用分页器,直接输出:

journalctl --no-pager -n 50

显示更详细字段:

journalctl -o verbose -n 5

查看日志占用空间

journalctl --disk-usage

如果日志占用过大,可以清理旧日志。例如保留最近 7 天:

sudo journalctl --vacuum-time=7d

或限制总空间:

sudo journalctl --vacuum-size=1G
注意

清理日志会删除历史排错线索。生产系统中执行前,应确认是否需要归档或备份。

小结

最常用的 journalctl 命令是:

journalctl -b
journalctl -u 服务名
journalctl -u 服务名 -f
journalctl -p err
journalctl --since today

遇到服务异常时,可以先看 systemctl status 服务名,再用 journalctl -u 服务名 继续追踪。