在 Linux 系统中,syslog 日志文件(常见于 /var/log/ 目录下,如 messages、syslog、secure 等)会随着时间增长而变大。压缩这些日志可以节省磁盘空间。以下是几种安全、常用且推荐的方法:
logrotate(✅ 最推荐)logrotate 是 Linux 官方用于管理日志轮转和压缩的工具,安全、自动、可配置。
ls /etc/logrotate.d/
常见配置文件:
/etc/logrotate.conf(全局)/etc/logrotate.d/syslog 或 /etc/logrotate.d/rsyslog编辑或查看配置:
cat /etc/logrotate.d/rsyslog
典型内容:
/var/log/syslog
/var/log/messages
{
rotate 7
daily
missingok
notifempty
compress
delaycompress
postrotate
/usr/bin/systemctl reload rsyslog >/dev/null 2>&1 || true
endscript
}
| 参数 | 含义 |
|---|---|
rotate 7 |
保留 7 个旧日志 |
daily |
每天轮转 |
compress |
使用 gzip 压缩 |
delaycompress |
延迟一天压缩 |
notifempty |
空文件不轮转 |
logrotate -vf /etc/logrotate.conf
systemctl stop rsyslog
gzip /var/log/syslog
# 或
gzip /var/log/messages
systemctl start rsyslog
✅ 压缩后文件会变成:
syslog.1.gz
⚠️ 不建议频繁手动操作,容易丢日志
truncate -s 0 /var/log/syslog
或:
: > /var/log/syslog
⚠️ 不要直接 rm 日志文件,否则服务可能继续写入已删除的 inode。
编辑:
vim /etc/rsyslog.conf
添加:
$SystemLogRateLimitInterval 5
$SystemLogRateLimitBurst 100
如果是 journalctl:
journalctl --vacuum-size=100M
journalctl --vacuum-time=7d
# 1. 查看磁盘
df -h
# 2. 查看大日志
du -sh /var/log/*
# 3. 清空或压缩
truncate -s 0 /var/log/syslog
# 4. 检查 logrotate
logrotate -vf /etc/logrotate.conf
✅ 长期方案:配置 logrotate(自动压缩、轮转)
✅ 临时方案:truncate -s 0 清空日志
⚠️ 不推荐:手动 gzip 而不通知服务
如果你愿意,可以告诉我:
/var/log/syslog 或 /var/log/messages)我可以给你一份完全贴合你系统的 logrotate 配置。