日志查看神器 journalctl 详解
今天分享一下 journalctl日志查看工具,它不仅功能强大,而且使用灵活,可以说是现代 Linux 系统日志查看的「瑞士军刀」。
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.
(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.
(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.
复制
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