首页/云/可观测性速查/journalctl:systemd 日志速查
日志平台52 条

journalctl:systemd 日志速查

systemd 服务日志集中在 journal:按服务/时间/级别过滤、跟看实时输出、查看磁盘占用与清理,是系统层排障的起点。

可观测性速查云更新于 2026-10-13

journalctl 是什么

journalctl 是 systemd 的日志查询工具,把系统与各服务的日志集中在 journal 里:可按服务、时间、优先级、启动顺序过滤,也能实时跟看、查看磁盘占用并做清理。它是 Linux 主机排障的起点——服务起不来先看它,磁盘告警先看它,重启前后对比也先看它。日志能否长期保留,取决于 /var/log/journal 目录是否存在。

基本信息

适用平台使用 systemd 的 Linux,如 CentOS 7+、Ubuntu 16.04+
常用参数-u 服务名、-f 实时、--since/--until、-p 优先级、-b 启动序号、-k 内核
持久化条件/var/log/journal 目录存在时长期保留
存储位置默认 /var/log/journal 或 /run/log/journal
权限要求完整读取通常需要 root 或加入 systemd-journal 组

典型使用场景

  • 服务启动失败:用 -u 指定服务看报错堆栈,比翻文件日志更快定位
  • 时间窗口排查:用 --since 与 --until 精确圈定故障时段
  • 重启对比:-b 与 -b -1 对照本次与上次启动的日志差异
  • 内核问题:-k 只看内核消息,排查内存不足、驱动与硬件报错
  • 空间治理:--disk-usage 与 --vacuum 控制日志占用,避免撑满磁盘

排查要点

  • 先用 -u 把范围收窄到目标服务,再叠加时间过滤,输出才读得完
  • 与外部系统对齐时间时加 -o short-precise,能看到精确到微秒的时间
  • 怀疑配置改动引入问题时,用 --since 定位到变更前后各一段窗口对照
  • 告警频繁指向同一服务时,先确认日志级别设置是否过低导致噪声
  • 清理前先记录当前占用与保留策略,避免下次复盘时无据可查

常用命令

常用命令
journalctl -u nginx -f                      # 实时跟看某服务
journalctl -u nginx --since "1 hour ago"    # 时间过滤
journalctl -p err -b                        # 本次启动的错误级别
journalctl -b -1 -p err                     # 上一次启动的错误
journalctl -k                               # 仅内核消息
journalctl --disk-usage                     # 当前占用空间
journalctl --vacuum-time=7d                 # 只保留最近 7 天
journalctl -u nginx --since "10:00" --until "10:30" -o short-precise

常用参数读法

参数作用备注
-u 服务名按服务过滤服务名需与 systemctl 显示一致
-f实时跟看类似 tail -f,退出用 Ctrl+C
--since / --until限定时间范围支持 1 hour ago 这类自然写法
-p按优先级过滤err 及以上;数字越小越严重
-b启动序号-b -1 表示上一次启动
journalctl 默认按时间正序输出,排查时配合 --no-pager 便于把结果重定向到文件,再交给他人分析。

易错点

  • journal 占用过大先看 --disk-usage 再 vacuum,直接删目录文件会破坏索引
  • 容器内大多不带 systemd,journalctl 适用于宿主机服务,容器进程要看容器侧日志
  • 没有 /var/log/journal 目录时日志只存在内存里,重启即丢,长期排障前先确认
  • 只改保留上限不重启相关服务不生效,磁盘告警会重复出现

数据来源与参考

  • systemd 官方文档 · journalctl 手册
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌