Linux如何查看系统日志_journalctl使用教程

6次阅读

Linux如何查看系统日志_journalctl使用教程

journalctl 是 systemd 系统中查看和管理日志的核心命令,替代了传统的 /var/log/ 下分散的文本日志(如 syslogmessages),日志统一由 journald 服务收集并存储在二进制格式中,支持结构化查询、实时跟踪和权限保护。

查看基础日志

直接运行 journalctl 会输出全部日志(从最旧到最新),通常内容太多,建议搭配分页或筛选使用:

  • journalctl -n 50:只显示最近 50 行
  • journalctl -f:实时跟踪新增日志(类似 tail -f
  • journalctl --since "2024-05-01" --until "2024-05-02":按时间范围过滤
  • journalctl --since "2 hours ago":支持相对时间表达式

按服务或进程过滤日志

定位问题时,常需聚焦某个服务(如 nginxsshd)或 PID:

  • journalctl -u nginx.service:查看 nginx 单元的日志(含启动、重启、崩溃记录)
  • journalctl _PID=1234:查指定进程 ID 的日志(下划线表示匹配内部字段)
  • journalctl _COMM=sshd:按命令名过滤(如所有 sshd 进程产生的日志)
  • journalctl -u sshd --no-pager | grep "Failed password":组合管道进一步筛选关键词

查看启动过程与引导日志

系统启动阶段的日志对排查开机失败、服务未启动等问题非常关键:

  • journalctl -b:仅显示本次启动后的日志
  • journalctl -b -1:显示上一次启动的日志(需启用持久化存储)
  • journalctl -b -p err:本次启动中所有等级为 err 及以上的错误日志
  • journalctl -k:只显示内核环缓冲区日志(dmesg 的 journal 版本)

持久化日志与磁盘空间管理

默认情况下,journald 日志只保存在内存或 /run/log/journal/(重启丢失)。如需长期保留,需启用持久化:

  • 创建目录:sudo mkdir -p /var/log/journal
  • 重启 journald:sudo systemctl restart systemd-journald
  • 查看当前配置:sudo journalctl --disk-usage(显示占用空间)
  • 清理旧日志:sudo journalctl --vacuum-time=7d(保留最近 7 天)或 --vacuum-size=500M

journalctl 功能强大但门槛略高,掌握几个常用选项就能覆盖绝大多数运维场景。关键是理解它基于结构化字段(如 _UNIT_PIDPRIORITY)的查询逻辑,而不是正则匹配文本。

text=ZqhQzanResources