服务器 Gind.cn

服务器问题集锦,包括 Linux(Ubuntu, Centos,Debian等)和Windows Server服务器

logrotate无法指示Apache重新打开Amazon Linux上的日志

我对logrotate有很好的使用经验,但最近在EC2上使用“Amazon Linux”(亚马逊部署的CentOS 6)进行安装时,logrotate无法使Apache重新打开其日志。 Apache的logrotateconfiguration与默认configuration略有不同 – 由于网站stream量高,保留旧日志的最低要求以及EC2实例存储中可用的less量空间,我们每天轮换日志,只保留2天的旧文件: # cat /etc/logrotate.d/httpd /var/log/httpd/*log { missingok notifempty sharedscripts daily rotate 2 compress postrotate /sbin/service httpd reload > /dev/null 2>/dev/null || true endscript } 旋转本身工作正常,旧的日志被压缩。 但是,在logrotate删除旧文件后,Apache实际上并没有重新打开这些日志文件,结果旧文件并没有真正被删除,而且Apache将pipe道数据保留在这些文件中 – 耗尽了可用空间,实际上丢失了日志数据,无障碍。 如果我从命令行(使用sudo或root)手动运行postrotate脚本,Apache将重新打开日志,并获得预期的行为。 日志中没有什么有趣的东西(cron日志中写着“logrotate started”,后面跟着“logrotate finished”),系统邮件没有关于cron作业问题的通知。 这个过程已经持续了几个星期(因为我们把生产服务器从基于Debian的安装移到了基于“Amazon Linux”的安装),而现在我对于如何解决这个问题感到无能为力。 任何帮助将不胜感激。