运维命令攻略,深入解析journalctl查看系统日志的详细用法

运维命令攻略,深入解析journalctl查看系统日志的详细用法"/

`journalctl` 是一个用于查询和分析系统日志的工具,它主要用于管理 systemd 的日志。在 Linux 系统中,systemd 是一个系统和服务管理器,它负责启动、停止、重启服务,以及管理系统的其他方面。`journalctl` 允许用户查看、管理、搜索和监控 systemd 的日志。
以下是 `journalctl` 命令的一些常用选项和用法:
### 基本用法
```bash journalctl ```
这将显示当前系统日志的所有内容。
### 指定单位或服务
```bash journalctl -u nginx ```
这将显示与 `nginx` 服务相关的日志。
### 指定时间范围
```bash journalctl --since "2023-01-01" --until "2023-01-02" ```
这将显示从 2023 年 1 月 1 日到 2023 年 1 月 2 日的日志。
### 搜索关键词
```bash journalctl | grep "error" ```
这将搜索包含 "error" 关键词的所有日志条目。
### 过滤日志
```bash journalctl _SYSTEMD_UNIT=nginx.service ```
这将显示与 `nginx` 服务相关的所有日志条目。
### 查看日志级别
```bash journalctl -4 ```
这将显示所有级别的日志,包括警告、错误等。
### 查看日志大小

相关内容:

lass="xiangguan" id="content">

1 什么是 journalctl?

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

相比传统的 syslog + tail 方式,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 是一个功能强大的工具,用于查询和管理系统日志。通过合理使用其选项,你可以方便地查看、过滤和分析日志信息。

关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章