文章目录
-
-
- [1. journald 简介](#1. journald 简介)
- [2. journald 日志存储位置](#2. journald 日志存储位置)
- [3. journalctl 常见用法](#3. journalctl 常见用法)
-
Ubuntu 24.04 采用了现代化的日志管理体系,如果是最小化安装的话,默认只会安装 systemd-journald
日志管理。
1. journald 简介
systemd-journald 是 systemd 套件中的系统日志服务,自 Ubuntu 16.04 起逐渐成为默认日志解决方案。它替代了传统的 syslog 机制,具有以下特点:
- 统一日志管理:收集系统内核、服务、应用程序的日志
- 二进制格式存储:日志以 journal 格式存储在 /var/log/journal,支持高效查询
- 丰富元数据:自动添加时间戳、PID、用户、主机等信息
- 灵活过滤机制:通过 journalctl 命令实现精准日志筛选
2. journald 日志存储位置
- 运行时日志:/run/log/journal(临时存储,重启丢失)
- 持久化日志:/var/log/journal(需手动创建目录并启用)
启用持久化存储:
shell
$ sudo mkdir -p /var/log/journal
$ sudo chown root:systemd-journal /var/log/journal
$ sudo chmod 2755 /var/log/journal
$ sudo systemctl restart systemd-journald
3. journalctl 常见用法
// 基础查询命令
shell
$ journalctl # 按时间倒序显示全部日志(按 q 退出)
$ journalctl -n 50 # 显示最近 50 行日志
$ journalctl --since today # 筛选今天 0 点至今的日志
$ journalctl --since "2025-06-10 08:00:00" --until "2025-06-10 18:00:00" # 按时间筛选日志
// 按服务 / 进程过滤
shell
$ journalctl -u sshd # 查看指定服务日志(如sshd)
$ journalctl _PID=1 # 查看指定PID的日志(如PID=1)
$ journalctl _UID=1000 # UID为1000的用户
$ journalctl --user=username # 用户名
// 按日志级别过滤
shell
$ journalctl -p err..emerg # 查看错误及以上级别日志
$ journalctl -p warning # 仅查看警告日志
日志级别(从低到高):emerg(紧急)、alert(警报)、crit(严重)、err(错误)、warning(警告)、notice(通知)、info(信息)、debug(调试)
// 按照关键字搜索
shell
$ journalctl /usr/sbin/sshd | grep error # 搜索包含"error"的日志
$ journalctl -f "Failed password for" # 精准搜索关键词(支持正则),实时追踪SSH登录失败日志
$ journalctl PATH=/var/log/syslog # 搜索指定路径的日志
// 高级查询语法
shell
$ journalctl _SYSTEMD_UNIT=sshd.service "Failed password" # 组合条件查询(同时满足多个条件)
$ journalctl -u sshd | grep -v "Accepted" # 排除特定内容
# 按引导会话查询(重启后会话ID重置)
$ journalctl -b # 当前引导
$ journalctl -b -1 # 上一次引导
$ journalctl --boot=-2 # 倒数第二次引导
// 实时监控与输出
shell
$ journalctl -f # 实时追踪日志(类似tail -f)
$ journalctl -o json # 输出为JSON格式
$ journalctl -o short-iso # 输出为可读性文本