在 Debian 服务器上轮换邮件日志

Bre*_*nt 2 linux debian log-files

Debian 系统上的邮件日志不使用常规的 /etc/logrotate.d 脚本来轮换它们。

我想强制我的邮件日志每天轮换(无论多小),并压缩结果,以便日志文件的编号与我的其他(更繁忙的)邮件服务器的编号相匹配。基本上,我想结束:

mail.log mail.log.0 mail.log.1.gz mail.log.2.gz ... mail.log.6.gz

有人能告诉我如何做到这一点吗?

Mik*_*eyB 9

我假设目前您已经安装了 sysklogd 并且您的日志文件使用默认的 /etc/cron.weekly/sysklogd 脚本进行轮换。

我建议您编辑 /etc/cron.weekly/sysklogd 脚本并修改:

logs=$(syslogd-listfiles --weekly)
Run Code Online (Sandbox Code Playgroud)

到:

logs=$(syslogd-listfiles --weekly -s mail\*)
Run Code Online (Sandbox Code Playgroud)

这将阻止默认脚本处理邮件日志。

编辑 /etc/logrotate.d/sendmail 并为适当的文件添加条目。你可能想要这样的东西:

/var/log/mail.log /var/log/mail.info /var/log/mail.warn /var/log/mail.err {
        rotate 7
        daily
        compress
        delaycompress
        missingok
        create 640 root adm
        sharedscripts
        postrotate
           /etc/init.d/sysklogd reload
        endscript
}
Run Code Online (Sandbox Code Playgroud)

要检查您的配置,请运行:

logrotate -d /etc/logrotate.conf
Run Code Online (Sandbox Code Playgroud)

并验证 logrotate 正在执行您想要的操作。

  • 只是 Debian wheezy 的更新。邮件日志的设置不再位于 sysklogd 文件中。设置移至“/etc/logrotate.d/rsyslog”。只需删除指向邮件日志的行并将它们添加到新文件中,如 MikeyB 所述。logrotate man 文件也非常有用 http://linux.die.net/man/8/logrotate (2认同)