每日 logrotate 错误创建唯一临时文件:权限被拒绝

每日 logrotate 错误创建唯一临时文件:权限被拒绝

我有一台 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 添加选项来指定(可写)临时文件的路径。

相关内容