journalctl
- 查询 systemd 日志
用于读取、过滤和显示由 systemd-journald.service
记录的系统日志。
- 功能:
journalctl
是 systemd 提供的系统日志查看工具,支持按时间、优先级、单元(unit)、启动记录等条件过滤日志。默认输出从最早的日志条目开始,按时间顺序排列。 - 日志来源:
可访问系统日志(/var/log/journal/
)和用户日志(~/.local/share/systemd/journal/
),支持跨文件、旋转日志和实时日志的整合输出。 - 权限要求:
- 普通用户默认只能访问自己的用户日志。
- 系统日志和他人的日志需 root 权限,或属于
systemd-journal
、adm
、wheel
等特权组。
基本语法
journalctl [OPTIONS...] [MATCHES...]
核心选项
1. 输出控制
选项 | 功能说明 |
---|
--no-full , --full , -l | 控制字段截断。默认显示完整字段;--no-full 截断长字段。 |
-a , --all | 显示所有字段,包括不可打印字符。 |
-f , --follow | 实时跟踪新日志(类似 tail -f )。 |
-e , --pager-end | 使用分页器时直接跳到日志末尾(默认显示最近1000行)。 |
-n , --lines=NUM | 限制显示行数(如 -n 50 显示最近50行)。 |
--no-tail | 在 --follow 模式下显示全部历史日志。 |
-r , --reverse | 倒序输出日志(最新条目在前)。 |
-o , --output=FORMAT | 指定输出格式: |
short
(默认):类似 syslog 格式。short-iso
:ISO 8601 时间戳。json
/json-pretty
:JSON 格式。cat
:仅显示消息内容(无元数据)。export
:二进制备份格式。
2. 时间与启动记录
选项 | 功能说明 |
---|
--utc | 使用 UTC 时间显示。 |
-b [ID][±offset] | 查看特定启动记录的日志。 |
- journalctl -b | 当前启动日志。 |
- journalctl -b -1 | 上一次启动日志。 |
- journalctl -b 12345678-1234-1234-1234-1234567890ab | 指定 Boot ID。 |
--list-boots | 列出所有启动记录(编号、Boot ID、时间范围)。 |
3. 过滤条件
选项 | 功能说明 |
---|
-k , --dmesg | 仅显示内核日志(_TRANSPORT=kernel )。 |
-t , --identifier=PATTERN | 按 syslog 标识符过滤(如 systemd 或正则表达式)。 |
-u , --unit=UNIT | 按 systemd 单元过滤(如 nginx.service 或正则表达式)。 |
-p , --priority=LEVEL | 按日志优先级过滤(0-7 或 emerg 到 debug )。 |
MATCH=FIELD=VALUE | 自定义字段匹配(如 _SYSTEMD_UNIT=httpd.service )。 - 多个不同字段匹配为逻辑 AND。 - 相同字段多个值为逻辑 OR。 - 使用 + 分隔符可组合多个匹配为逻辑 OR(如 + _PID=1234 _PID=5678 )。 |
4. 其他功能
选项 | 功能说明 |
---|
-x , --catalog | 添加日志解释文本(需启用 catalog)。 |
-q , --quiet | 静默模式(不提示权限问题)。 |
-m , --merge | 合并所有可用日志(包括远程日志)。 |
--user | 查看用户日志(默认当前用户)。 |
--system | 查看系统日志(默认)。 |
常见示例
1. 基础用法
journalctl
2. 实时跟踪
journalctl -f
3. 查看当前启动日志
journalctl -b
4. 查看上一次启动日志
journalctl -b -1
5. 按单元过滤
journalctl -u nginx.service
6. 按优先级过滤
journalctl -p 3
7. 自定义字段匹配
journalctl _SYSTEMD_UNIT=sshd.service _PID=1234
8. 倒序输出
journalctl -r
9. JSON 格式输出
journalctl -o json
10. 仅显示消息内容
journalctl -o cat
11. 列出所有启动记录
journalctl --list-boots
12. 查看内核日志
journalctl -k
注意事项
- 权限问题:
- 普通用户无法访问系统日志或他人的用户日志。
- 使用
sudo
或加入 systemd-journal
组可获取权限。
- 日志保留策略:
- 默认日志存储在
/var/log/journal/
,空间不足时会自动清理旧日志。 - 可通过
journald.conf
调整保留时长(Storage=
, MaxUse=
)。
- 性能优化:
- 大量日志查询时,避免使用
--list-boots
或 --reverse
以减少延迟。
- 分页器控制:
- 默认使用
less
分页,可通过 --no-pager
禁用。 - 长行可通过左右箭头键滚动查看。
- 时间格式:
--utc
强制使用 UTC 时间,避免时区干扰。
- 日志导出:
- 使用
--output=export
导出为二进制格式,适合备份或传输。
相关命令