我有一台 CentOS 6.7 机器,由于某种原因,它无法每天轮换日志。我每天都会在 /var/mail/root 中收到类似这样的电子邮件:
To: [email protected]
Content-Type: text/plain; charset="ANSI_X3.4-1968"
Subject: Anacron job 'cron.daily' on server.nl
Message-Id: <[email protected]>
Date: Wed, 9 Mar 2016 03:42:02 +0100 (CET)
/etc/cron.daily/logrotate:
error: error creating unique temp file: Permission denied
运行logrotate -vf /etc/logrotate.conf
会按预期旋转日志,不会出现错误或警告。SELinux 已启用,因此我怀疑它可能是权限被拒绝错误的原因,但/var/log/audit/audit.log
过去几周没有任何条目。
如果我手动运行 logrotate,它白天工作正常,但晚上却运行失败,我不确定该如何排除故障。
3 月 10 日补充:感谢 Iain,我能够获得 (ana)cron 在夜间所做工作的日志输出,末尾/tmp/logrotate.out
有以下几行:
@rotating pattern: /var/log/btmp monthly (1 rotations)
empty log files are rotated, old logs are removed
considering log /var/log/btmp
log does not need rotating
set default create context
error: error creating unique temp file: Permission denied
这不是我所期望的,因为这不是与我试图排除故障的 Rails 应用程序日志相关的错误。通过不关注错误消息本身(在谷歌上只找到了几个韩语和俄语搜索结果),而是更多地关注我遇到的实际问题,我发现logrotate cron 作业不轮换某些日志这与我试图解决的问题非常相似(我的 nginx 日志确实会轮换,它会跳过 Rails 日志)。所以,即使它没有出现在 中,它毕竟可能与 SELinux 有关audit.log
。我正在尝试那里发布的解决方案。
答案1
为了尝试调试这个问题,我要做的第一件事就是修改 cron 运行的 logrotate 脚本,并让它以详细模式运行 logrotate。
我的脚本在 /etc/cron.daily/logrotate 中有此行
/usr/sbin/logrotate /etc/logrotate.conf
我会把它改成
/usr/sbin/logrotate -v /etc/logrotate.conf >>/tmp/logrotate.out 2>&1
答案2
您应该-s
向 logrotate 添加选项来指定(可写)临时文件的路径。