温馨提示×

debian message日志怎么轮转

小樊
37
2026-09-19 04:59:39
栏目: 智能运维

在 Debian 中,/var/log/messages 通常由 rsyslog 产生,而日志轮转一般是由 logrotate 来管理的。

下面按常见情况说明怎么做。


一、确认是否由 rsyslog 生成

ls -l /var/log/messages

如果有该文件,通常是 rsyslog 写的:

# /etc/rsyslog.conf 或 /etc/rsyslog.d/*.conf
*.info;mail.none;authpriv.none;cron.none  /var/log/messages

二、使用 logrotate 轮转(推荐方式)

Debian 默认使用 logrotate,它每天由 cron / systemd timer 调用。

1. 查看已有配置

ls /etc/logrotate.d/
cat /etc/logrotate.d/rsyslog

通常 rsyslog 的日志(包括 messages)已经在配置中:

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

如果没有 /var/log/messages,可以手动加。


2. 手动添加 messages 轮转配置(示例)

创建或编辑:

sudo nano /etc/logrotate.d/messages

内容示例:

/var/log/messages {
    daily
    missingok
    notifempty
    rotate 7
    compress
    delaycompress
    create 640 root adm
    sharedscripts
    postrotate
        /usr/lib/rsyslog/rsyslog-rotate
    endscript
}

说明:

  • daily:每天轮转
  • rotate 7:保留 7 份
  • compress:压缩旧日志
  • postrotate:通知 rsyslog 重新打开日志文件

三、测试 logrotate 配置

1. 调试(不真正执行)

sudo logrotate -d /etc/logrotate.d/messages

2. 强制执行一次

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

四、确认 rsyslog 支持重打开日志

Debian 通常已有:

/usr/lib/rsyslog/rsyslog-rotate

或者 systemd 环境也可使用:

postrotate
    systemctl kill -s HUP rsyslog
endscript

五、常见问题

1. messages 文件不生成?

  • 检查 rsyslog 是否运行:
    systemctl status rsyslog
    
  • 检查 rsyslog 配置是否写 messages

2. 轮转后日志不继续写?

  • 一定是 postrotate 没通知 rsyslog
  • 用 HUP 信号或 rsyslog-rotate

如果你愿意,我可以:

  • 帮你写一份 最小可用 messages 轮转配置
  • 或根据你 Debian 版本(11 / 12)给精确示例

0