实用百科指南
霓虹主题四 · 更硬核的阅读氛围

systemd日志轮转管理:让系统日志不占满磁盘

发布时间:2026-01-13 15:40:48 阅读:8 次

systemd日志轮转管理:让系统日志不占满磁盘

用过Linux的人都知道,系统运行久了,日志文件容易越积越多。特别是启用了systemd的系统,日志默认由journald收集并保存在内存或磁盘中,时间一长,可能悄悄吃掉几个GB的空间。这时候,就得靠systemd的日志轮转管理来控制局面。

日志存在哪儿?

systemd的日志由systemd-journald服务负责记录,默认情况下,日志会保存在/run/log/journal(临时存储)和/var/log/journal(持久存储)两个位置。如果/var/log/journal目录不存在,日志只存在内存里,重启就没了。想长期保留,得手动创建这个目录。

创建命令:

sudo mkdir -p /var/log/journal

怎么开启日志轮转?

journald本身就有轮转机制,不需要额外装logrotate来处理它自己的日志。关键在于配置/etc/systemd/journald.conf这个文件。

打开配置文件:

sudo nano /etc/systemd/journald.conf

常见控制大小的参数有这几个:

  • SystemMaxUse=:限制日志在磁盘上最多占用多少空间,比如设成100M
  • SystemKeepFree=:留出多少空间不给日志用,防止磁盘被撑爆
  • SystemMaxFileSize=:单个日志文件最大体积,用于触发轮转
  • MaxRetentionSec=:日志最长保留时间,比如30天

举个实际例子:

[Journal]
SystemMaxUse=500M
SystemMaxFileSize=100M
MaxRetentionSec=30day

改完后重启服务生效:

sudo systemctl restart systemd-journald

查看当前日志占用情况

想知道现在日志占了多少空间,可以直接看:

journalctl --disk-usage

输出类似这样:

Archived and active journals take up 230.4M in the file system.

一眼就知道有没有超标。

手动清理旧日志

有时候想立刻腾点空间,可以按时间删:

# 只保留最近7天的日志
sudo journalctl --vacuum-time=7d

或者按容量清理:

# 最多保留500M的日志
sudo journalctl --vacuum-size=500M

这些命令会自动删除最老的日志文件,保留最新的,安全又省心。

避免日志爆炸的小建议

某些服务如果频繁报错,journald会一条条记下来,几分钟内生成上万条记录。比如某个定时任务失败重试,日志可能暴涨。这种时候,除了调低服务的日志级别,也可以在journald配置里加:

RateLimitIntervalSec=30s
RateLimitBurst=1000

意思是每30秒最多记录1000条,超出的暂时丢掉,防止日志洪峰拖慢系统。

日志不是越全越好,合理轮转才是长久之计。把journald配置好,相当于给系统装了个自动清理的“垃圾桶”,既保留排查问题的能力,又不让磁盘告急。