每天一个 Linux 知识:查看和管理系统日志 journalctl 命令

内容分享3天前发布
2 1 0

journalctl 是 systemd 的一部分,用于读取由 systemd-journald 服务收集的二进制日志(称为“journal”)。这些日志不仅包含内核消息、系统服务输出,还记录用户登录、硬件事件等信息。默认情况下,journal 日志存储在内存或 /run/log/journal/(临时)或 /var/log/journal/(持久化)中。

每天一个 Linux 知识:查看和管理系统日志 journalctl 命令

与传统日志相比,journal 日志具有以下优势:

  • 结构化数据:每条日志包含多个字段(如 _PID、_COMM、_SYSTEMD_UNIT),便于准确过滤。
  • 实时性:支持动态跟踪日志输出。
  • 权限控制:普通用户只能查看自己的日志,管理员可查看全部。
  • 自动轮转与压缩:避免日志无限增长。

基本用法

1. 查看全部日志

journalctl

每天一个 Linux 知识:查看和管理系统日志 journalctl 命令

该命令会分页显示系统自启动以来的所有日志(类似 less),按时间倒序排列(最新在最后)。按 q 退出。

2. 实时跟踪日志(类似 tail -f)

journalctl -f

每天一个 Linux 知识:查看和管理系统日志 journalctl 命令

持续输出最新日志,常用于调试服务或观察系统行为。

3. 查看特定服务的日志

这是最常用的操作之一。例如查看 SSH 服务日志:

journalctl -u sshd

每天一个 Linux 知识:查看和管理系统日志 journalctl 命令

-u 表明 –unit,可指定 systemd 服务单元名称。支持通配符:

journalctl -u nginx*

4. 按时间范围筛选

查看今天日志:

journalctl --since today

每天一个 Linux 知识:查看和管理系统日志 journalctl 命令

查看最近一小时日志:

journalctl --since "1 hour ago"

每天一个 Linux 知识:查看和管理系统日志 journalctl 命令

查看指定时间段:

journalctl --since "2025-11-01" --until "2025-11-03 12:00"

5. 查看内核日志

journalctl -k

每天一个 Linux 知识:查看和管理系统日志 journalctl 命令

等价于 dmesg 输出,但格式更统一。

6. 查看特定用户的日志

journalctl _UID=1000

可通过 id 命令获取用户 UID。

高级过滤与输出控制

  • 仅显示错误级别及以上日志
journalctl -p err

每天一个 Linux 知识:查看和管理系统日志 journalctl 命令

日志级别包括:emerg(0)、alert(1)、crit(2)、err(3)、warning(4)、notice(5)、info(6)、debug(7)。

  • 限制输出行数
journalctl -n 20    # 显示最后20行
  • 以简洁格式输出
journalctl --no-pager    # 禁用分页,适合脚本使用
journalctl -o short-precise   # 显示准确时间戳
  • 导出日志到文件
journalctl -u myapp.service > app.log
© 版权声明

相关文章

1 条评论

您必须登录才能参与评论!
立即登录
  • 头像
    水滴绿儿 读者

    收藏了,感谢分享

    无记录