跳到主内容

journalctl 日志清理教程:容量限制、轮转与安全回收

在 Linux VPS 上检查 systemd journal 占用,配置持久化和容量上限,使用 rotate 与 vacuum 安全回收归档日志并核对结果。

GSProber · 主机测评编辑0 阅读
在 Linux VPS 上检查 systemd journal 占用,配置持久化和容量上限,使用 rotate 与 v…

journalctl 日志清理教程:容量限制、轮转与安全回收

systemd-journald 收集内核、系统服务和用户服务的结构化日志。小磁盘 VPS 如果长期不检查,journal 文件可能占据明显空间;直接删除 /var/log/journal 中的文件又可能破坏日志索引和排障证据。正确做法是先确认存储模式与占用,再配置长期上限,最后使用 journalctl 提供的轮转和 vacuum 命令回收归档文件。

先确认日志存储在哪里

查看 journal 当前占用:

Bash
sudo journalctl --disk-usage

持久日志通常位于 /var/log/journal,内存型日志位于 /run/log/journaljournald.confStorage= 决定使用 persistent、volatile、auto 或 none。auto 模式只有在持久目录存在时才写入磁盘。不要为了省空间盲目切换成 volatile,否则重启后历史记录会消失,故障调查能力也会下降。

先查看有效配置,而不是只读主文件:

Bash
systemd-analyze cat-config systemd/journald.conf
systemctl status systemd-journald

发行版包可能在 /usr/lib 提供默认值,本地覆盖应放入 /etc/systemd/journald.conf.d/。这样更容易审计,也不会在升级时覆盖供应商文件。文本应用日志仍可由 logrotate VPS 日志轮转教程 管理,两套机制不要混用。

设置长期容量边界

创建 drop-in 文件,例如 /etc/systemd/journald.conf.d/limits.conf

INI
[Journal]
SystemMaxUse=500M
SystemKeepFree=1G
SystemMaxFileSize=64M
MaxRetentionSec=30day
Compress=yes

数值只是示例,应根据磁盘容量、日志增长和审计要求调整。SystemMaxUse 限制持久 journal 总体目标,SystemKeepFree 要求为其他数据保留空间,journald 会采用更严格的一项。RuntimeMaxUseRuntimeKeepFree 则用于 /run 中的内存型日志。

修改后先检查文件内容,再重启服务:

Bash
sudo systemctl restart systemd-journald
sudo journalctl --disk-usage

重启 journald 不等于立即删除所有超额文件。官方文档指出,容量回收主要针对归档文件,当前正在写入的活动文件会保留。要立刻获得更明确的回收效果,应先轮转当前文件。

使用 rotate 和 vacuum 回收

先要求 journald 将活动文件转成归档文件:

Bash
sudo journalctl --rotate

然后按容量、时间或文件数量清理。以下命令保留归档总量目标:

Bash
sudo journalctl --vacuum-size=500M

按时间保留:

Bash
sudo journalctl --vacuum-time=30days

也可以把 --rotate 与 vacuum 放在一次调用中。需要注意,--disk-usage 统计活动文件和归档文件,而 vacuum 只移除归档文件,所以执行后显示值可能仍高于指定目标。不要因此反复缩小参数,更不要绕过 journalctl 直接删除正在使用的文件。

清理前后如何核对

操作前保存关键事件或导出所需范围。可按服务、启动批次和时间过滤:

Bash
sudo journalctl -u ssh.service --since '7 days ago'
sudo journalctl --list-boots
sudo journalctl -b -1

清理后再次运行 journalctl --disk-usage,并检查最近日志、上一启动记录和关键服务记录仍可读取。还可使用 journalctl --verify 检查 journal 文件内部一致性。若日志突然快速增长,应找到产生大量消息的服务并修复根因,而不是仅靠更频繁的 vacuum 掩盖问题。

磁盘空间已经紧张时,应同时检查包缓存、容器层、应用日志和数据库文件。站内的 Docker Compose 数据备份教程 可帮助区分容器卷与可重新创建的数据。

自动化时的安全边界

长期控制应优先依赖 journald.conf 的容量与保留设置,而不是每天运行激进的清理脚本。如果确实需要额外定时任务,应先用 systemd timer,记录每次执行结果,并保证参数不会比审计要求更短。任何自动化都应保留告警:磁盘持续增长、journald 失败或关键服务大量报错时要通知管理员。

一个稳妥流程是:确认存储模式,设置容量与空闲空间边界,观察一周增长趋势,再决定保留时间。这样既能防止日志挤满系统盘,也不会在故障发生时发现关键证据已经被过早清除。

所属专题:建站VPS专题
教程GsDesk 是一款基于 Cloudflare Workers 与 VPS 自托管 的开源远程桌面项目,支持 WebR…

Cloudflare Workers 免费搭建开源远程桌面完整教程:无需 VPS,支持 WebRTC P2P、D1、KV、R2、浏览器远程控制、Windows 客户端和文件传输

GsDesk 是一款基于 Cloudflare Workers 与 VPS 自托管 的开源远程桌面项目,支持 WebRTC P2P 直连,服务端仅负责 API、身份认证和 WebSocket 信令,不中转桌面视频流,大幅降低服务器带宽成本。项目支持 Cloudflare 免费套餐 部署,也可以使用 Docker 在 VPS 上自托管,内置 Windows 客户端、浏览器控制端、手机远程控制,支持 8 位设备 ID、OTP 一次性密码、永久密码、Ed25519 设备认证、JWT 身份验证、文件传输、剪贴板同步、自动重连 等完整功能。

310 阅读

教程如果你一直想拥有一个属于自己的网盘,但又不想买 VPS、维护数据库或者折腾复杂环境,那么这个基于 Cloudflare…

CloudDisk:基于 Cloudflare Workers 的免费个人网盘,无需 VPS、MySQL,支持 R2+D1+KV 一键部署

如果你一直想拥有一个属于自己的网盘,但又不想买 VPS、维护数据库或者折腾复杂环境,那么这个基于 Cloudflare Workers 的开源项目 CloudDisk 值得看看。整个系统运行在 Cloudflare 免费套餐上,文件存储使用 R2,数据库使用 D1,会话数据使用 KV,不需要 MySQL,也不需要服务器。支持多用户登录、文件夹管理、分享链接、在线预览、Office 文档查看、文本在线编辑、大文件断点续传、协作者权限管理等功能。无论是个人备份、开发者存放代码文件、团队共享资料,还是搭建自己的私有网盘,都可以直接部署到 Cloudflare,一键完成,几乎零维护成本,非常适合独立开发者、个人站长和轻量团队使用。

289 阅读

教程很多朋友在使用 Linux 服务器或者 VPS 时,经常会遇到 DNS 污染、解析慢、域名无法访问等问题。其实只需要安…

Linux 开启 DNS over HTTPS(DoH)教程:使用 Cloudflared + systemd 实现加密 DNS,防污染、防劫持

很多朋友在使用 Linux 服务器或者 VPS 时,经常会遇到 DNS 污染、解析慢、域名无法访问等问题。其实只需要安装 Cloudflare 官方的 cloudflared,并配合 systemd 自启动,就能让整个系统通过 DNS over HTTPS(DoH)进行加密解析。

241 阅读

常见问题

journalctl vacuum 为什么没有降到指定容量?

vacuum 只删除归档文件,而 disk-usage 还统计活动文件。先执行 rotate,通常能让更多文件进入可回收状态。

可以直接删除 /var/log/journal 里的文件吗?

不建议。应使用 journalctl 的 rotate 与 vacuum 命令,避免破坏正在使用的文件和日志索引。

SystemMaxUse 和 SystemKeepFree 哪个生效?

journald 会同时遵守两者,并采用能让日志占用更小的边界。

清理日志后如何确认没有损坏?

重新检查 disk-usage,读取最近和上一启动批次的记录,并运行 journalctl --verify 检查内部一致性。

评价与回复

无需登录;审核通过后公开显示。