journalctl是 Linux 系统中用于查看和管理 systemd 日志的核心工具。它支持按时间、服务、优先级等多维度过滤,并能实时跟踪日志,非常适合排查系统故障和服务异常。
journalctl 命令详解
1. 基本介绍
- 作用:查询和显示 systemd 管理的日志(替代传统 syslog)。
- 日志来源:内核、服务(如 nginx、docker)、用户程序等。
- 存储方式:二进制格式,支持结构化查询和高效检索。
2. 基本语法
journalctl [选项] [匹配条件...]
3. 常用选项
| 选项 | 功能说明 | 示例 |
|---|---|---|
-b |
显示本次启动的日志 | journalctl -b |
-f |
实时跟踪日志(类似 tail -f) |
journalctl -f |
-k |
只显示内核日志 | journalctl -k |
-u |
查看指定服务日志 | journalctl -u nginx.service |
-n |
显示最近 N 条日志 | journalctl -n 50 |
--since / --until |
按时间范围过滤 | journalctl --since "2025-01-01" --until "2025-01-02" |
-p |
按日志优先级过滤 | journalctl -p err |
-e |
跳到日志末尾 | journalctl -e |
--disk-usage |
查看日志占用空间 | journalctl --disk-usage |
4. 日志优先级
日志分级(数值越小越严重):
- 0 emerg:紧急情况
- 1 alert:需要立即处理
- 2 crit:严重错误
- 3 err:一般错误
- 4 warning:警告
- 5 notice:注意事项
- 6 info:一般信息
- 7 debug:调试信息
示例:
journalctl -p warning # 显示警告及以上级别日志
5. 高级用法
- 按 PID 查询:
journalctl _PID=1234 - 组合过滤:
journalctl -u ssh.service -p err --since today - 导出日志:
journalctl > /tmp/system.log - 清空日志:
journalctl --vacuum-time=7d(只保留最近 7 天日志)
6. 注意事项
- 日志持久化:默认日志不会长期保存,需在
/var/log/journal/配置持久化。 - 权限问题:普通用户可能无法查看全部日志,需使用
sudo。 - 磁盘占用:日志文件可能很大,建议定期清理或设置轮转策略