温馨提示×

ubuntu syslog怎么轮转

小樊
51
2026-09-29 05:32:30
栏目: 智能运维

在 Ubuntu 上,syslog 的轮转通常由 logrotate 管理。下面按「原理 → 常见配置 → 手动/自动操作」说明。


一、syslog 日志轮转原理

Ubuntu 中常见的 syslog 实现:

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

轮转工具:

  • logrotate
  • 配置文件:
    • 主配置:/etc/logrotate.conf
    • 子配置:/etc/logrotate.d/

syslog 的轮转规则通常在:

/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:压缩旧日志
  • delaycompress:延迟压缩(方便当前写入)
  • postrotate:轮转后通知 rsyslog 重新打开日志

三、手动触发 syslog 轮转(测试用)

sudo logrotate -f /etc/logrotate.d/rsyslog

或对整个系统:

sudo logrotate -f /etc/logrotate.conf

查看执行详情:

sudo logrotate -d /etc/logrotate.d/rsyslog

(-d 是 dry-run,不真正执行)


四、自动轮转时间

  • logrotate 由 cron / anacron 每天执行:
/etc/cron.daily/logrotate

默认检查频率:

  • 按配置中的 daily / weekly / monthly

五、常见问题排查

1. syslog 不轮转

检查:

sudo systemctl status logrotate
sudo journalctl -u logrotate

2. 日志文件越来越大

可能是:

  • 配置写错路径
  • rsyslog 没重新打开文件(postrotate 缺失)

3. 想改成按大小轮转

修改配置:

size 100M

或:

maxsize 50M

六、示例:按大小+保留 7 天

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

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

  • Ubuntu 版本(22.04 / 20.04 / 18.04)
  • 用的是 rsyslog 还是 syslog-ng
  • 想解决的具体问题(日志爆盘 / 不轮转 / 自定义周期)

我可以给你更精确的配置。

0 踩