journalctl --disk-usage精确统计journald管理的全部持久化日志(含SELinux、polkit、systemd-logind等审计相关事件)所占物理磁盘空间,单位字节级,需Storage=persistent启用持久化才生效。

journalctl --disk-usage 本身不专用于“审计子系统”,它统计的是 systemd-journald 所管理的全部持久化日志(含内核、服务、用户会话等)占用的物理磁盘空间,而这些日志正是 Linux 审计事件(如 auditd 产生的记录)的重要补充来源——但注意:auditd 自身日志默认不走 journald,而是写入 /var/log/audit/audit.log 等独立文件。
所以,若你真正想盘点的是 与系统审计强相关、且实际由 journald 承载的日志空间(例如:audit 相关 unit 的启动/失败记录、SELinux AVC 拒绝消息、systemd-logind 的登录审计事件、polkit 权限决策日志等),journalctl --disk-usage 是唯一能直接、实时反映这部分 结构化审计上下文 所占磁盘开销的命令。
执行后输出类似:
Archived and active journals take up 842.5M in the file system.这行数字就是当前所有 journald 日志(含所有具备审计语义的服务行为日志)真实占用的物理空间总量——精确到字节级,无需解析文件大小或估算压缩率,因为它是 journald 自己遍历索引+数据文件后上报的磁盘占用值。
确认该数值是否反映“审计相关”日志
不是所有日志都算审计数据,但以下几类默认经由 journald 记录,构成轻量级审计链:
- systemd 服务生命周期事件:如 `auditd.service` 启停、`sshd.service` 认证失败(PAM 模块打点)、`dbus-broker.service` 权限调用
- 内核安全消息:`journalctl -k | grep -i "avc\|selinux\|capability"` 可提取 SELinux/Smack 的强制访问控制拒绝日志
- 登录与会话审计:`journalctl _UID=0 -u systemd-logind --since "2 hours ago"` 查看 root 会话创建/销毁
- 策略执行痕迹:`journalctl -u polkit --priority=3` 获取权限提升被拒绝或批准的完整记录
排除干扰:确保统计的是“真实物理空间”而非缓存或内存日志
运行前需确认 journald 已启用持久化存储,否则 `--disk-usage` 会返回 No journal files were found. 或显示 0B:
- 检查配置:Storage=persistent 在 `/etc/systemd/journald.conf` 中已启用
- 验证目录存在且可写:/var/log/journal/ 存在,属主为 root:systemd-journal,权限含 sgid(drwxr-sr-x)
- 重启服务生效:sudo systemctl restart systemd-journald
快速定位高审计密度日志源(辅助判断空间合理性)
如果 `--disk-usage` 显示占用异常高(如 >500MB),可进一步筛查是否某审计敏感服务在高频刷日志:
- 按服务频次排序:journalctl -n 1000 --no-pager | awk '{print $3}' | sort | uniq -c | sort -nr | head -10
- 查 SELinux 拒绝峰值:journalctl -k --since "1 day ago" | grep -c avc
- 看 auditd 自身状态:journalctl -u auditd -n 20(注意:auditd 日志本体不在 journald,但其启停、配置加载等元事件在此)
注意:它不包含 auditd 原生日志文件
真正的审计原始流(如系统调用、规则匹配详情)仍由 `auditd` 写入 `/var/log/audit/`。这部分需单独用 du -sh /var/log/audit 统计。`journalctl --disk-usage` 只管 journald 管辖范围内的那部分——但它恰恰是审计上下文最易读、最结构化、最便于关联分析的部分。










