温馨提示×

ubuntu syslog怎样轮转

小樊
50
2026-09-02 02:19:46
栏目: 智能运维

在 Ubuntu 中,syslog 的轮转通常由 logrotate 管理。下面按常见场景说明。


一、Syslog 日志轮转原理

Ubuntu 中常见的 syslog 实现:

  • rsyslog(默认)
  • 日志文件一般在:
    • /var/log/syslog
    • /var/log/messages(部分版本)

轮转配置由:

/etc/logrotate.d/rsyslog

控制。


二、查看 syslog 轮转配置

cat /etc/logrotate.d/rsyslog

典型内容示例:

/var/log/syslog
{
    rotate 4
    weekly
    missingok
    notifempty
    compress
    delaycompress
    sharedscripts
    postrotate
        /usr/lib/rsyslog/rsyslog-rotate
    endscript
}

含义:

  • rotate 4:保留 4 个旧日志
  • weekly:每周轮转
  • compress:压缩旧日志
  • postrotate:轮转后通知 rsyslog 重新打开日志

三、手动触发 syslog 轮转

1️⃣ 测试配置是否正确

logrotate -d /etc/logrotate.d/rsyslog

2️⃣ 强制立即轮转

logrotate -f /etc/logrotate.d/rsyslog

或对所有日志:

logrotate -f /etc/logrotate.conf

四、修改轮转策略(示例)

改为每天轮转,保留 7 天

编辑:

sudo nano /etc/logrotate.d/rsyslog

修改为:

/var/log/syslog
{
    daily
    rotate 7
    compress
    delaycompress
    missingok
    notifempty
    sharedscripts
    postrotate
        /usr/lib/rsyslog/rsyslog-rotate
    endscript
}

保存后测试:

logrotate -d /etc/logrotate.d/rsyslog

五、确认 cron 是否正常执行

logrotate 由 cron 调用:

cat /etc/cron.daily/logrotate

一般无需手动改。

查看最近轮转记录:

cat /var/lib/logrotate/status

六、常见问题

❌ 轮转后 syslog 不写新文件

原因:没执行 postrotate ✅ 确保有:

postrotate
    /usr/lib/rsyslog/rsyslog-rotate
endscript

然后重载 rsyslog:

sudo systemctl reload rsyslog

❌ 日志太大

可:

  • 缩短轮转周期(daily)
  • 减小 rotate
  • 开启 compress

如果你用的是 Ubuntu 22.04 / 24.04systemd-journald + rsyslog,我也可以给你更精确的方案。

0