Linux系统之journalctl 命令详解

journalctl - 查询 systemd 日志
用于读取、过滤和显示由 systemd-journald.service 记录的系统日志。

  • 功能
    journalctl 是 systemd 提供的系统日志查看工具,支持按时间、优先级、单元(unit)、启动记录等条件过滤日志。默认输出从最早的日志条目开始,按时间顺序排列。
  • 日志来源
    可访问系统日志(/var/log/journal/)和用户日志(~/.local/share/systemd/journal/),支持跨文件、旋转日志和实时日志的整合输出。
  • 权限要求
    • 普通用户默认只能访问自己的用户日志。
    • 系统日志和他人的日志需 root 权限,或属于 systemd-journaladmwheel 等特权组。
基本语法
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 或 emergdebug)。
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
# 实时监控新日志(类似 tail -f /var/log/messages)
3. 查看当前启动日志
journalctl -b
# 显示当前启动的所有日志
4. 查看上一次启动日志
journalctl -b -1
# 显示上一次启动的日志
5. 按单元过滤
journalctl -u nginx.service
# 显示 nginx 服务相关的日志
6. 按优先级过滤
journalctl -p 3
# 显示日志级别为 3(ERROR)及以上的条目
7. 自定义字段匹配
journalctl _SYSTEMD_UNIT=sshd.service _PID=1234
# 显示 sshd 服务且进程 ID 为 1234 的日志
8. 倒序输出
journalctl -r
# 从最新日志开始显示
9. JSON 格式输出
journalctl -o json
# 以 JSON 格式显示日志(适合脚本解析)
10. 仅显示消息内容
journalctl -o cat
# 仅显示日志消息,无元数据
11. 列出所有启动记录
journalctl --list-boots
# 显示所有启动记录及其 Boot ID
12. 查看内核日志
journalctl -k
# 显示内核日志(dmesg 替代方案)
注意事项
  1. 权限问题
    • 普通用户无法访问系统日志或他人的用户日志。
    • 使用 sudo 或加入 systemd-journal 组可获取权限。
  2. 日志保留策略
    • 默认日志存储在 /var/log/journal/,空间不足时会自动清理旧日志。
    • 可通过 journald.conf 调整保留时长(Storage=, MaxUse=)。
  3. 性能优化
    • 大量日志查询时,避免使用 --list-boots--reverse 以减少延迟。
  4. 分页器控制
    • 默认使用 less 分页,可通过 --no-pager 禁用。
    • 长行可通过左右箭头键滚动查看。
  5. 时间格式
    • --utc 强制使用 UTC 时间,避免时区干扰。
  6. 日志导出
    • 使用 --output=export 导出为二进制格式,适合备份或传输。
相关命令
  • 查看日志大小
    journalctl --disk-usage
    
  • 清理日志
    journalctl --vacuum-size=1G
    # 保留最近 1GB 的日志
    
  • 结合其他工具
    journalctl -u sshd.service | grep "Failed"
    # 过滤 sshd 服务的失败登录记录
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值