Linux journalctl 命令:systemd 日志查询与故障定位指南

举报
yd_232564628 发表于 2026/10/03 09:56:45 2026/10/03
【摘要】 在采用 systemd 的现代 Linux 发行版(CentOS 7+、Ubuntu 16.04+、Debian 8+ 等)中,journalctl 是日志排查的第一入口。所有日志由 systemd-journald 守护进程统一收集,以二进制格式存储在 /var/log/journal/ 目录下,支持结构化查询和高效索引。相比传统文本日志,它的优势在于:无需手动 grep 多个文件、自动轮...

在采用 systemd 的现代 Linux 发行版(CentOS 7+、Ubuntu 16.04+、Debian 8+ 等)中,journalctl 是日志排查的第一入口。所有日志由 systemd-journald 守护进程统一收集,以二进制格式存储在 /var/log/journal/ 目录下,支持结构化查询和高效索引。相比传统文本日志,它的优势在于:无需手动 grep 多个文件、自动轮转不占满磁盘、支持按进程/服务精确过滤。

最基础的用法

journalctl

不加参数会输出从系统启动以来的全部日志,内容极多,通常需要用管道过滤或配合分页参数使用。默认通过 less 分页显示,按 q 退出,/ 可以搜索关键字。

实际使用中,高频场景与命令组合

1. 按服务(Unit)过滤

这是最常用的场景,直接定位某个服务的日志。

journalctl -u nginx.service

或简写为 journalctl -u nginx。可以指定多个服务同时查看:

journalctl -u nginx -u php-fpm

2. 按时间范围过滤

查看今天的日志:

journalctl --since today

查看最近 1 小时的日志:

journalctl --since "1 hour ago"

查看指定时间段的日志:

journalctl --since "2026-10-03 14:00:00" --until "2026-10-03 15:00:00"

时间格式非常灵活,支持自然语言如 "yesterday"、"2 days ago" 等。

3. 实时追踪日志(类似 tail -f)

journalctl -f

-f (follow) 模式会持续输出新产生的日志,非常适合在重启服务或触发操作时实时观察输出。也可以结合服务名使用:

journalctl -u mysql -f

4. 按启动周期过滤

查看本次启动以来的日志:

journalctl -b

查看上一次启动周期的日志:

journalctl -b -1

查看倒数第三次启动的日志:

journalctl -b -3

当服务器意外重启后,用 -b -1 可以快速查看崩溃前的最后日志,定位根因。

5. 按日志级别过滤

journalctl -p err

-p (priority) 支持 emerg、alert、crit、err、warning、notice、info、debug 八个级别。journalctl -p err 只显示错误及以上级别的日志,过滤掉大量无关信息。

6. 查看内核日志

journalctl -k

等价于传统 dmesg,但支持时间过滤和分页。排查硬件故障、驱动问题时常用。

7. 查看特定进程的日志

如果你知道出问题的进程 PID:

journalctl _PID=1234

或者通过可执行文件路径过滤:

journalctl /usr/bin/python3

8. 输出格式控制

无分页、纯文本输出(适合管道处理):

journalctl --no-pager -u nginx

JSON 格式输出(适合程序解析):

journalctl -u nginx -o json

简洁输出(去掉主机名、优先级等前缀):

journalctl -o short-iso

如果不知道如何下手,可以先尝试

journalctl -xe

-x 会尝试为常见错误码添加解释性说明,-e 直接跳转到日志末尾(最新内容)。这是快速了解"刚才发生了什么"的快捷方式。
或者,当你发现某个服务启动失败时,标准排查流程是:

systemctl status nginx          # 1. 先看服务状态和最后几行日志
journalctl -u nginx -n 50       # 2. 查看该服务最近 50 行日志
journalctl -u nginx --since "10 min ago"  # 3. 如果刚重启过,看最近 10 分钟
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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