Debian 系统上的邮件日志不使用常规的 /etc/logrotate.d 脚本来轮换它们。
我想强制每天轮换我的邮件日志(无论多小),并压缩结果,以便日志文件的编号与我的其他(更繁忙的)邮件服务器的编号相匹配。本质上,我希望最终得到:
mail.log mail.log.0 mail.log.1.gz mail.log.2.gz ... mail.log.6.gz
有人能告诉我如何实现这个吗?
答案1
我假设您目前拥有库存 sysklogd 安装,并且您的日志文件使用默认的 /etc/cron.weekly/sysklogd 脚本轮换。
我建议您编辑 /etc/cron.weekly/sysklogd 脚本并修改:
logs=$(syslogd-listfiles --weekly)
到:
logs=$(syslogd-listfiles --weekly -s mail\*)
这将阻止默认脚本处理邮件日志。
编辑 /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
}
要检查您的配置,请运行:
logrotate -d /etc/logrotate.conf
并验证 logrotate 是否正在执行您想要的操作。