日志查看神器 journalctl 详解

今天分享一下 journalctl日志查看工具,它不仅功能强大,而且使用灵活,可以说是现代 Linux 系统日志查看的「瑞士军刀」。

1. 什么是 journalctl?

journalctl 是 systemd 的一部分,用于查看由 systemd-journald 收集的日志数据。systemd-journald 会收集内核、服务、标准输出、标准错误以及应用程序的日志信息,并统一管理、存储。

相比传统的 syslog + tail 方式,journalctl 提供了更强大的过滤、格式控制和时间跳转能力。

2. 基础用法

(1) 查看所有日志

复制
# 打印所有级别的日志 journalctl1.2.

默认按时间顺序输出所有日志,可能非常长。

(2) 实时查看日志(相当于 tail -f)

复制
journalctl -f1.

适合监控服务运行状态,实时滚动显示最新日志。

(3) 查看系统启动日志

复制
journalctl -b1.

-b 参数表示查看当前启动周期的日志。-x参数显示详细信息:

复制
journalctl -xb # 过滤报错信息 journalctl -xb |grep -i error1.2.3.4.

(4) 按时间范围过滤日志

复制
journalctl --since "2025-04-20 09:00" --until "2025-04-23 12:00" journalctl --since "2 hours ago"1.2.
3. 强大的过滤机制

(1) 按服务过滤日志

复制
journalctl -u docker.service journalctl -u nginx.service1.2.

可以看到 nginx 服务的所有日志。

(2)  查看特定 PID 的日志

复制
journalctl _PID=12341.

(3) 按用户 ID 过滤

复制
journalctl _UID=10001.

(4) 查看内核日志(类似 dmesg)

复制
journalctl -k1.
4. 日志持久化配置

(1) 默认日志是临时的吗?

journal产生的日志默认是临时,有些 Linux 发行版默认日志存储在 /run/log/journal/,属于非持久化,重启就没了。

(2) 如何开启日志持久化?

复制
sudo mkdir -p /var/log/journal sudo systemd-tmpfiles --create --prefix /var/log/journal sudo systemctl restart systemd-journald1.2.3.

重启后日志就会存储在 /var/log/journal/,永久保存。

5. 管理日志空间

修改 /etc/systemd/journald.conf,添加如下配置:

复制
SystemMaxUse=500M # 日志文件最大空间 SystemKeepFree=100M # 至少保留这么多磁盘空间 SystemMaxFileSize=100M # 单个日志文件最大大小 SystemMaxFiles=10 # 最多保留几个文件1.2.3.4.

配置后重启服务生效:

复制
sudo systemctl restart systemd-journald1.
6. 按日志级别过滤
复制
journalctl -p err # 显示错误及以上级别日志 journalctl -p warning # 显示警告及以上级别日志1.2.

日志级别一览(数字/名称):

数值

名称

说明

0

emerg

紧急,系统不可用

1

alert

需立刻处理

2

crit

严重

3

err

错误

4

warning

警告

5

notice

正常但重要信息

6

info

一般信息

7

debug

调试信息

阅读剩余
THE END