温馨提示×

如何压缩linux syslog

小樊
35
2026-08-25 17:32:59
栏目: 智能运维

在 Linux 系统中,syslog 日志文件(常见于 /var/log/ 目录下,如 messagessyslogsecure 等)会随着时间增长而变大。压缩这些日志可以节省磁盘空间。以下是几种安全、常用且推荐的方法:


一、使用 logrotate(✅ 最推荐)

logrotate 是 Linux 官方用于管理日志轮转和压缩的工具,安全、自动、可配置。

1. 查看已有配置

ls /etc/logrotate.d/

常见配置文件:

  • /etc/logrotate.conf(全局)
  • /etc/logrotate.d/syslog/etc/logrotate.d/rsyslog

2. 示例:压缩 syslog

编辑或查看配置:

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
}

3. 参数说明

参数 含义
rotate 7 保留 7 个旧日志
daily 每天轮转
compress 使用 gzip 压缩
delaycompress 延迟一天压缩
notifempty 空文件不轮转

4. 手动测试 logrotate

logrotate -vf /etc/logrotate.conf

二、手动压缩已有 syslog(⚠️ 不推荐长期使用)

1. 停止 syslog 服务(重要)

systemctl stop rsyslog

2. 压缩日志

gzip /var/log/syslog
# 或
gzip /var/log/messages

3. 重新启动服务

systemctl start rsyslog

✅ 压缩后文件会变成:

syslog.1.gz

⚠️ 不建议频繁手动操作,容易丢日志


三、清空日志(不压缩,但快速释放空间)

1. 安全清空(推荐)

truncate -s 0 /var/log/syslog

或:

: > /var/log/syslog

⚠️ 不要直接 rm 日志文件,否则服务可能继续写入已删除的 inode。


四、限制 syslog 日志大小(预防)

1. rsyslog 限大小(示例)

编辑:

vim /etc/rsyslog.conf

添加:

$SystemLogRateLimitInterval 5
$SystemLogRateLimitBurst 100

2. journalctl(systemd 日志)

如果是 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 而不通知服务


如果你愿意,可以告诉我:

  • 你的 Linux 发行版(CentOS / Ubuntu / Debian)
  • 日志路径(/var/log/syslog/var/log/messages
  • 是否磁盘已满

我可以给你一份完全贴合你系统的 logrotate 配置

0