返回首页

systemd 日志管理与实时监控:journalctl 命令完全指南

📅 创建于 2026-05-26 🔄 更新于 2026-05-26 📝 505 字

来源:Shad0w-top | 发布日期:2025-08-29

systemd 日志管理与实时监控:journalctl 命令完全指南

journalctl 是 systemd 系统自带的日志管理工具,替代传统 syslog,将所有日志统一管理。熟练掌握 journalctl 是 Linux 系统管理员和开发者的必备技能。

基础实时监控

journalctl -f                       # 实时追踪所有系统日志
journalctl -n 50 -f                 # 先显示最近 50 条,再实时追踪
journalctl -xef                     # 显示带解释的实时日志(--catalog)

-f(follow)模式与 tail -f 类似,持续输出最新系统日志。

精准过滤

按服务单元过滤

journalctl -u sshd -f               # 监控 sshd 服务
journalctl -u mysqld -f             # 监控 MySQL 服务
journalctl -u docker -u nginx -f    # 同时监控多个服务

注意: 服务名称严格区分大小写,建议先用 systemctl list-units 确认准确名称。

按日志级别过滤

journalctl 支持 8 种优先级(标准 syslog 级别):

等级 数字 含义 说明
emerg 0 紧急 系统不可用
alert 1 警报 必须立即采取行动
crit 2 临界 硬件故障等
err 3 错误 操作失败
warning 4 警告 需要注意的问题
notice 5 通知 正常但重要
info 6 信息 一般信息
debug 7 调试 调试信息
journalctl -p err -f                # 仅查看错误及以上级别
journalctl -p3 -f                   # 同上,数字表示
journalctl -p warning -f            # 监控警告级别

按时间范围过滤

journalctl --since "1 hour ago" -f  # 近 1 小时日志实时追踪
journalctl --since "yesterday" -f   # 昨日至今
journalctl --since "10 minutes ago" -f
journalctl --since "2025-08-29 09:00:00" -f  # 指定时间点

高级组合查询

# 多服务 + 级别 + 历史上下文
journalctl -u docker -u sshd -p warning -n 20 -f

这个组合实现:

  • 同时监控 docker 和 sshd 服务
  • 仅显示 warning 及以上级别
  • 先提供 20 条历史上下文
  • 实时跟踪新产生的日志

内核日志监控

journalctl -k -f                    # 实时监控内核消息

-k(kernel)参数仅显示内核消息,对于排查网络设备、驱动问题非常有用。

与 grep 结合使用

journalctl -f | grep "connection refused"
journalctl -f | grep -i "error"
journalctl -f | grep -E "OOM|oom-killer"

磁盘占用管理

journald 日志会持续占用磁盘空间,需要定期管理:

journalctl --disk-usage             # 查看日志占用
journalctl --vacuum-time=7d         # 保留最近 7 天
journalctl --vacuum-size=500M       # 限制最大 500MB
journalctl --rotate                 # 手动轮转日志文件

命令速查表

命令 功能 适用场景
journalctl -f 实时所有日志 整体系统监控
journalctl -u sshd -f 实时指定服务 服务故障排查
journalctl -p err -f 实时错误日志 错误快速定位
journalctl -n 50 -f 带上下文实时监控 问题分析
journalctl --since "1h ago" -f 时间段实时监控 时段性问题
journalctl -k -f 实时内核日志 内核/驱动问题
journalctl --disk-usage 查看日志占用 磁盘空间管理

实战场景

SSH 暴力破解检测: 使用 journalctl -u sshd -f 实时监控 SSH 登录尝试,观察 Failed password 事件。日志中可清晰看到来自特定 IP 的自动化暴力破解尝试,结合 ssh-brute-force-protection-guide 中的 fail2ban 或公钥认证方案加固。

应用启动异常排查: 启动服务后使用 journalctl -u <service> -n 50 -f 追踪启动过程日志,定位启动失败根因。

内核网络问题: 使用 journalctl -k -f 观察网络设备状态变化(如 veth 接口的 promiscuous mode 切换、网桥端口状态)。

最佳实践

  • 权限: 部分系统日志需要 sudo 权限
  • 时区: journalctl 默认使用系统本地时区
  • 服务名核对: 使用前确认服务单元名称准确性(systemctl list-units
  • 组合使用: 灵活组合 -u / -p / -n / --since / -f 参数实现精准监控
  • 实时分析: 结合 grep/awk 等工具进行实时模式匹配和分析

关联页面

页面关联点
linux-essential-commands-reference30 个高频命令速查(含 journalctl 基础用法)
server-performance-four-dimensions服务器性能五维排查(日志监控是重要维度)
linux-disk-space-troubleshooting磁盘空间排查(journalctl 磁盘清理)
online-troubleshooting-checklist线上故障排查速查清单
ssh-brute-force-protection-guideSSH 暴力破解防御(journalctl 是检测工具)
linux-filesystem-directory-structure-guideLinux FHS 文件系统目录结构详解 — 含各目录用途、运维排查路径速查、磁盘分区方案
linux-port-inspection-toolsss/netstat/lsof 端口探查三工具