插件窝 干货文章 如何使用 journalctl 查看和分析 systemd 日志(附实例)

如何使用 journalctl 查看和分析 systemd 日志(附实例)

journalctl 日志 bash 查看 234    来源:    2025-04-20

使用 journalctl 查看和分析 systemd 日志指南

journalctl 是 systemd 日志系统 (journald) 的主要管理工具,它提供了强大的日志查询和分析功能。下面我将详细介绍 journalctl 的使用方法和常见实例。

基础命令

1. 查看完整日志

journalctl

2. 查看特定服务的日志

journalctl -u service_name.service

3. 查看内核日志

journalctl -k

时间过滤

4. 查看今天的日志

journalctl --since today

5. 查看特定时间段的日志

journalctl --since "2023-01-01 00:00:00" --until "2023-01-02 12:00:00"

6. 查看最近1小时的日志

journalctl --since "1 hour ago"

日志级别过滤

7. 查看错误级别的日志

journalctl -p err

8. 查看警告及以上级别的日志

journalctl -p warning

其他实用选项

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

journalctl -f

10. 查看特定进程的日志

journalctl _PID=1234

11. 查看特定用户的日志

journalctl _UID=1000

12. 查看引导日志

journalctl -b

13. 查看特定引导的日志

journalctl -b -1  # 上一次引导
journalctl -b -2  # 上上次引导

14. 以JSON格式输出

journalctl -o json

15. 显示磁盘使用情况

journalctl --disk-usage

高级用法

16. 组合查询条件

journalctl -u nginx.service _PID=8080 --since "1 hour ago"

17. 反向输出日志 (最新日志在前)

journalctl -r

18. 显示特定字段

journalctl -o verbose

19. 限制输出行数

journalctl -n 50  # 显示最后50行

20. 清空日志

sudo journalctl --vacuum-size=100M  # 保留100MB日志
sudo journalctl --vacuum-time=1months  # 保留1个月的日志

实际应用示例

示例1:排查SSH服务问题

journalctl -u sshd --since "1 hour ago" -p err

示例2:查看系统启动时的错误

journalctl -b -p 3  # 3=err级别

示例3:监控Apache服务的实时日志

journalctl -u apache2 -f

示例4:查找包含"error"关键词的日志

journalctl -g "error" --since "yesterday"

通过掌握这些 journalctl 命令,您可以高效地管理和分析系统日志,快速定位和解决问题。