温馨提示×

linux syslog如何旋转

小樊
43
2026-07-02 01:03:08
栏目: 智能运维

在 Linux 中,**syslog 日志轮转(rotate)**通常由 logrotate 工具来完成。下面按常见场景说明配置和使用方法。


一、syslog 日志轮转的核心机制

  • syslog 服务:负责写日志(如 /var/log/messages/var/log/syslog
  • logrotate:负责定期轮转、压缩、删除旧日志
  • cron:定期触发 logrotate

✅ 大多数发行版已经默认配置好 syslog 的轮转规则。


二、常见 syslog 日志文件

发行版 主要 syslog 文件
RHEL / CentOS /var/log/messages
Debian / Ubuntu /var/log/syslog
通用 /var/log/auth.log/var/log/kern.log

三、logrotate 配置文件位置

1️⃣ 主配置文件

/etc/logrotate.conf

2️⃣ syslog 专属配置

/etc/logrotate.d/syslog
# 或
/etc/logrotate.d/rsyslog

四、典型 syslog 轮转配置示例

RHEL / CentOS

/var/log/messages /var/log/secure /var/log/maillog /var/log/spooler /var/log/boot.log /var/log/cron {
    sharedscripts
    rotate 7
    daily
    missingok
    notifempty
    compress
    delaycompress
    postrotate
        /bin/systemctl kill -s HUP rsyslog.service >/dev/null 2>&1 || true
    endscript
}

Debian / Ubuntu

/var/log/syslog
/var/log/auth.log
/var/log/kern.log {
    rotate 7
    daily
    missingok
    notifempty
    compress
    delaycompress
    postrotate
        /usr/lib/rsyslog/rsyslog-rotate 2>/dev/null || true
    endscript
}

五、关键参数说明

参数 作用
rotate 7 保留 7 个旧日志
daily 每天轮转
weekly 每周轮转
size 100M 超过 100M 就轮转
compress gzip 压缩
delaycompress 延迟一轮再压缩
missingok 日志不存在不报错
notifempty 空文件不轮转
postrotate 轮转后执行(通知 syslog 重新打开文件)

⚠️ 非常重要
syslog 必须重新打开日志文件,否则仍会写旧文件。


六、如何立即手动轮转 syslog

logrotate -f /etc/logrotate.d/syslog

或:

logrotate -vf /etc/logrotate.conf

七、验证是否生效

ls -lh /var/log/syslog*

应看到类似:

syslog
syslog.1
syslog.2.gz

八、常见问题排查

1️⃣ 日志不轮转

  • 检查 cron 是否运行
systemctl status cron   # Debian
systemctl status crond  # RHEL

2️⃣ 轮转后 syslog 不写新文件

  • 检查 postrotate 脚本是否正确
  • 确认 rsyslog 已重载

3️⃣ 磁盘仍满

  • 有进程仍占用已删除文件:
lsof | grep deleted

九、总结一句话

Linux syslog 日志轮转由 logrotate 完成,关键是配置好轮转策略并在 postrotate 中通知 rsyslog 重新打开日志文件。

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

  • 发行版(CentOS 7 / Rocky / Ubuntu 20.04 等)
  • 是否使用 rsyslog / syslog-ng

我可以给你一份完全适配你系统的配置

0