journalctl 是 systemd 的日志查看工具,用于查询和显示 systemd 收集的二进制日志(journal)。它集中管理内核、服务、应用程序等输出的日志信息,是 Linux 系统日志分析的核心命令。
常用功能
1. 查看所有日志
journalctl
默认显示所有日志(可能量很大),按时间顺序从旧到新。
2. 查看本次启动以来的日志
journalctl -b
# 或指定启动序号(如上一次启动)
journalctl -b -1
3. 实时跟踪日志(类似 tail -f)
journalctl -f
4. 查看指定单元的日志
journalctl -u nginx.service # 服务单元
journalctl -u ssh.socket # socket 单元
journalctl -u user-1000.slice # slice 单元
5. 按时间过滤
journalctl --since "2025-03-01"
journalctl --until "2025-03-10 15:30:00"
journalctl --since yesterday
journalctl --since "1 hour ago"
6. 按优先级/级别过滤
journalctl -p err # 只显示错误及以上级别
journalctl -p warning -p notice # 显示 warning 和 notice
级别:emerg, alert, crit, err, warning, notice, info, debug
7. 查看内核日志
journalctl -k
8. 根据特定字段过滤
journalctl _PID=1234 # 指定进程
journalctl _UID=1000 # 指定用户
journalctl _COMM=sshd # 指定命令名
journalctl _SYSTEMD_UNIT=nginx.service
9. 控制输出格式
journalctl -o verbose # 显示所有字段
journalctl -o json # JSON 格式
journalctl -o json-pretty # 易读的 JSON
journalctl -o short-full # 标准格式(含时间戳)
10. 查看日志占用的磁盘空间
journalctl --disk-usage
11. 维护和清理日志
journalctl --vacuum-size=200M # 保留最近 200M 日志,删除旧的
journalctl --vacuum-time=2weeks # 保留最近 2 周
journalctl --vacuum-files=5 # 只保留 5 个日志文件
12. 查看最后 n 行
journalctl -n 50
13. 显示日志尾部并持续跟踪(组合)
journalctl -u nginx.service -f -n 10
小贴士
- journalctl 默认显示当前用户的可见日志(系统日志需 root 权限)。
- 日志是结构化的,支持丰富的过滤条件,通过
journalctl -o verbose可查看所有可用的字段名。 - 使用
man journalctl查看完整文档。


发表回复