Journalctl系统日志详细使用指南

目录

1. 基本语法

2. 基础用法

✅ 查看所有日志

✅ 查看实时日志(类似 tail -f)

✅ 查看指定行数的最新日志

✅ 禁用分页输出

✅ 按服务查看日志

✅ 按进程 ID(PID)或可执行文件路径

✅ 按时间范围过滤

✅ 按日志等级(Priority)过滤查看

✅ 按主机名、用户、组件过滤

✅ 查看引导(Boot)日志

✅ 按关键词过滤

3. 高级技巧

✅  组合过滤条件

✅  保存日志到文件

✅  清理日志(释放磁盘空间)

✅  配置日志保留策略

✅ 日志分析与格式化​

​​JSON 输出​​

自定义输出模板

合并多台机器的日志

4. 常用命令速查表


Journalctl 是 systemd 系统中用于查询和管理日志的核心工具,它统一收集并管理系统、服务和应用程序的日志,支持灵活的筛选、查询和导出功能。以下是 journalctl 的详细使用指南:

1. 基本语法

journalctl [OPTIONS...] [MATCHES...]
  • OPTIONS:控制输出格式、过滤条件、时间范围等。
  • MATCHES:键值对形式的过滤条件,如 UNIT=sshd.service

2. 基础用法

✅ 查看所有日志

journalctl
  • 按时间顺序(从旧到新)显示所有日志。

  • 使用 Page Up/Page Down、箭头键导航。

  • 按 End 跳到日志末尾(查看最新日志)。

  • 按 / 搜索,按 n/N 查找下一个/上一个匹配项。

  • 按 q 退出。

✅ 查看实时日志(类似 tail -f

journalctl   -f

  • 实时跟踪最新日志,按 Ctrl+C 退出。

✅ 查看指定行数的最新日志

journalctl -n 30   # 查看最后30条日志
journalctl         # 默认显示最后10条

✅ 禁用分页输出

journalctl --no-pager
  • 将日志直接输出到标准输出,适合脚本处理。

✅ 按服务查看日志

journalctl -u nginx.service                      # 查看nginx服务的日志
journalctl -u docker.service --since today       # 查看今天以来的docker日志
journalctl -u nginx.service -u php-fpm.service   # 合并显示多个服务日志
journalctl -u nginx.service -f                   # 实时查看某个服务
journalctl -u nginx.service -p err -f            # 实时监控nginx服务的错误日志

✅ 按进程 ID(PID)或可执行文件路径

sudo journalctl _PID=1234         # 按 PID 查看
sudo journalctl /usr/bin/nginx    # 按可执行文件路径

✅ 按时间范围过滤

# 查看今天日志
sudo journalctl --since today

# 查看昨天日志
sudo journalctl --since yesterday

# 查看最近 1 小时
sudo journalctl --since "1 hour ago"

# 查看指定时间段
sudo journalctl --since "2025-08-15 10:00:00" --until "2025-08-15 12:00:00"
sudo journalctl --since="2012-10-30 18:17:16"
sudo journalctl --since  09:00 --until "1 hour ago"

# 查看最近 10 分钟
sudo journalctl -S -10min

✅ 按日志等级(Priority)过滤查看

日志等级从 0(紧急)到 7(调试):

等级名称说明
0emerg系统不可用
1alert必须立即采取行动
2crit严重情况
3err错误
4warning警告
5notice正常但重要
6info信息性
7debug调试信息
# 查看错误及以上级别(err, crit, alert, emerg)
sudo journalctl -p err

# 查看警告及以上
sudo journalctl -p warning

# 查看调试信息(包含所有级别)
sudo journalctl -p debug

✅ 按主机名、用户、组件过滤

# 按主机名
sudo journalctl _HOSTNAME=lzmf_server

# 按内核日志(dmesg)
sudo journalctl -k
# 或
sudo journalctl SYSLOG_IDENTIFIER=kernel

# 按可执行文件
sudo journalctl SYSLOG_IDENTIFIER=sshd

# 按用户(UID 或用户名)
sudo journalctl _UID=1008

✅ 查看引导(Boot)日志

# 查看本次启动日志
sudo journalctl -b

# 查看上一次启动日志
sudo journalctl -b -1

# 查看指定次数前的启动
sudo journalctl -b -2

# 列出所有启动记录
sudo journalctl --list-boots

✅ 按关键词过滤

# 查找包含 "Out of memory" 或 "oom-killer" 的日志
sudo journalctl -g "out of memory" -g "oom-killer"

# 包含指定关键词的日志
sudo journalctl | grep "error occurred"  

3. 高级技巧

✅  组合过滤条件

# 查看 sshd 服务在今天 10 点后的错误日志
sudo journalctl -u sshd.service --since "today 10:00" -p err

# 查看特定 IP 的 SSH 登录尝试
sudo journalctl -u sshd.service | grep "Failed password for"

⚠️ 注意:管道过滤会丢失结构化信息,建议优先使用 journalctl 内置过滤。

✅  保存日志到文件

# 保存为 JSON 格式
sudo journalctl -u nginx.service -o jsonl > nginx.log

# 保存指定时间范围
sudo journalctl --since "2025-08-15" --until "2025-08-16" > system.log

✅  清理日志(释放磁盘空间)

# 查看日志占用的磁盘空间
sudo journalctl --disk-usage

# 删除 7 天前的日志
sudo journalctl --vacuum-time=7d

# 删除日志直到占用空间小于 100M
sudo journalctl --vacuum-size=100M

# 删除除当前启动外的所有日志
sudo journalctl --vacuum-files=1

⚠️ 生产环境建议设置日志保留策略,避免日志占满磁盘。


✅  配置日志保留策略

编辑 /etc/systemd/journald.conf

[Journal]
# 保留 30 天日志
SystemMaxUse=500M
SystemMaxFileSize=100M
MaxRetentionSec=30day

# 是否持久化日志(默认不保存重启后日志)
Storage=persistent

重启服务生效:

sudo systemctl restart systemd-journald

日志分析与格式化​

  • ​​JSON 输出​​

journalctl -o json          # 以 JSON 格式输出(适合编程解析)
journalctl -o json-pretty   # 格式化 JSON
journalctl -o json-sse      # Server-Sent Events格式
  • 自定义输出模板

journalctl --template="{{.Timestamp}} {{.Message}}" --output short-iso
  • 通过 --template 定义输出字段,支持所有日志字段(如 TIMESTAMPMESSAGE_PID 等)。
  • 合并多台机器的日志

journalctl --merge -D /path/to/logs # 合并多个日志目录

4. 常用命令速查表

目的命令
实时查看日志sudo journalctl -f
查看某个服务sudo journalctl -u nginx.service
查看本次启动sudo journalctl -b
查看上次启动sudo journalctl -b -1
查看错误日志sudo journalctl -p err
按时间过滤sudo journalctl --since "2 hours ago"
输出 JSONsudo journalctl -o json
清理日志sudo journalctl --vacuum-size=100M
查看日志占用sudo journalctl --disk-usage
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值