# journalctl 与 systemd 日志

> 如何使用 journalctl 读取日志、检查日志占用的空间大小，并通过 --vacuum 选项安全地缩减日志大小。

journalctl 是读取 systemd 日志的命令，后者是被大多数现代 Linux 发行版使用的二进制日志存储。它可以按服务、引导、时间和优先级过滤消息，还可以报告和限制日志的磁盘使用量（在 /var/log/journal 中通常会增长到数吉字节）。

## 读取日志

'journalctl -u nginx.service' 显示单个单元的消息。'-b' 将输出限制为当前的引导，'-b -1' 限制为上一次引导。'-p err' 仅显示错误及更高级别的信息。'--since "1 hour ago"' 按时间进行限制，'-f' 则实时跟踪新消息。

## 磁盘使用情况

'journalctl --disk-usage' 打印活动日志文件和归档日志文件的总大小。

'--vacuum-size='、'--vacuum-time=' 和 '--vacuum-files=' 会删除归档的日志文件，直到满足限制条件；它们不会触及活动文件。

## 永久限制

限制是在 /etc/systemd/journald.conf 中设置的，例如 SystemMaxUse=500M，然后通过 'systemctl restart systemd-journald' 应用。如果没有进行设置，journald 默认会将日志保持在文件系统大小的 10% 以内，上限为 4 GB。

## 如何缩减日志

1. 检查大小：journalctl --disk-usage
2. 轮转活动文件以便对其进行清理：sudo journalctl --rotate
3. 仅保留两周：sudo journalctl --vacuum-time=2weeks
4. 或者最多保留 500 MB：sudo journalctl --vacuum-size=500M
5. 要使其永久生效，请在 /etc/systemd/journald.conf 中设置 SystemMaxUse=500M 并运行：sudo systemctl restart systemd-journald

## 注意事项

- 清理后的日志将不复存在；请保留足够的历史记录以便排查问题。
- 在 journald 运行期间，请勿手动删除 /var/log/journal 中的文件。

## 资料来源

- [journalctl(1)](https://man7.org/linux/man-pages/man1/journalctl.1.html)
- [journald.conf(5)](https://man7.org/linux/man-pages/man5/journald.conf.5.html)

最后更新: 2026-10-08
URL: https://raincleaner.eu/zh/wiki/linux/journalctl
