跳转到内容
命令速查debugging

journalctl:查询 systemd 日志

使用 journalctl 按本次启动、服务、时间和优先级筛选日志,定位服务与系统故障。

状态
已审阅
难度
入门
风险
只读 / 低风险
平台
linux · debian · ubuntu

journalctl 读取 systemd journal 中的结构化日志。它可以把范围限定到某次启动、某个单元、时间窗口或日志优先级,比无条件输出全部日志更适合排障。

Terminal window
journalctl [选项] [匹配条件]
Terminal window
unit=ssh.service
# 当前启动中该服务最近 100 条日志
journalctl --boot=0 --unit="$unit" --lines=100 --no-pager
# 当前启动中的 warning 及更高优先级日志
journalctl --boot=0 --priority=warning --no-pager
# 查看最近 30 分钟并持续跟随该服务的新日志;Ctrl+C 退出
journalctl --unit="$unit" --since="30 min ago" --follow
# 查看 journal 当前磁盘占用
journalctl --disk-usage

每条记录通常包含时间、主机、进程或单元以及消息。没有结果不一定代表没有故障,还要核对启动范围、时间条件、权限和 journal 是否持久化。

  • 查询本身不修改系统,但日志可能含用户名、地址、路径、命令参数或应用数据;公开前必须脱敏。
  • 普通用户只能读取被授权的日志。不要为了方便放宽 journal 文件权限;需要时使用受控的管理员权限查询。
  • --follow 会持续运行,使用 Ctrl+C 正常退出。
  • 不要只截取最后一条错误;应保留同一时间窗口中的前因和服务退出状态。

该命令要求 systemd journal。日志是否跨重启保留取决于发行版和 journald 配置;精简系统可能只使用内核环形缓冲区或其他日志守护程序。