专业编程基础技术教程

网站首页 > 基础教程 正文

运维命令——查看日志journalctl详解

ccvgpt 2025-05-22 09:33:45 基础教程 1 ℃

1 什么是 journalctl?

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

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

运维命令——查看日志journalctl详解

2 基础用法

2.1 查看所有日志

# 打印所有级别的日志
journalctl

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

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

journalctl -f

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

2.3 查看系统启动日志

journalctl -b

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

journalctl -xb 

# 过滤报错信息
journalctl -xb |grep -i error

2.4 按时间范围过滤日志

journalctl --since "2025-04-20 09:00" --until "2025-04-23 12:00"
journalctl --since "2 hours ago"

3 强大的过滤机制

3.1 按服务过滤日志

journalctl -u docker.service
journalctl -u nginx.service

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

3.2 查看特定 PID 的日志

journalctl _PID=1234

3.3 按用户 ID 过滤

journalctl _UID=1000

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

journalctl -k

4 日志持久化配置

4.1 默认日志是临时的吗?

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

4.2 如何开启日志持久化?

sudo mkdir -p /var/log/journal
sudo systemd-tmpfiles --create --prefix /var/log/journal
sudo systemctl restart systemd-journald

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

5 管理日志空间

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

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

配置后重启服务生效:

sudo systemctl restart systemd-journald

6 按日志级别过滤

journalctl -p err      # 显示错误及以上级别日志
journalctl -p warning  # 显示警告及以上级别日志


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

数值

名称

说明

0

emerg

紧急,系统不可用

1

alert

需立刻处理

2

crit

严重

3

err

错误

4

warning

警告

5

notice

正常但重要信息

6

info

一般信息

7

debug

调试信息

journalctl 是一个功能强大的工具,用于查询和管理系统日志。通过合理使用其选项,你可以方便地查看、过滤和分析日志信息。

Tags:

最近发表
标签列表