httpd的Logrotateconfiguration(CentOS)

我在CentOS 5.5上运行Apache 2.2.3,并在/etc/logrotate.d/httpd中注意到以下的logrotate postrotateconfiguration:

postrotate /sbin/service httpd reload > /dev/null 2>/dev/null || true endscript 

由于这个设定每星期运行一次,所以它为Apache做了一个很难重新加载的工作,这看起来会杀死所有的连接(对吗?我不是专家)。 将postrotate脚本改为正常重启会更安全吗?

 /usr/sbin/apachectl graceful > /dev/null 

这是我已经为我的虚拟主机的postrotate行为。 我不明白为什么httpd旋转脚本需要重新加载。

任何build议如何正确configuration这将不胜感激。

谢谢,拉尔夫

不,“/ sbin / service httpd reload”命令不会终止所有连接,因为它不启动“硬重启”。 CentOS通过服务触发Apache,其他操作系统通过init脚本执行。 对于他们所有人来说,“重新加载”意味着正常的重启/发送Apache USR1信号:

“USR1或优雅的信号会导致父进程通知孩子在当前请求后退出(或者如果他们没有提供任何服务,立即退出)。父母重新读取其configuration文件并重新打开其日志文件。当每个孩子死亡时,父母将replace为新一代configuration中的孩子,立即开始提供新的请求。“

原来的答案是不正确的。 初始化“reload”只是将reload命令传递给apachectl。 重载将发送SIGHUP到httpd,立即终止subprocess, 中断当前连接的客户端: http : //httpd.apache.org/docs/current/stopping.html#hup

查看针对RHEL httpd软件包的错误: https ://bugzilla.redhat.com/show_bug.cgi?id =480624

graceful在logrotate脚本中没有使用的原因是因为没有办法保证subprocess已经停止: http : //httpd.apache.org/docs/current/stopping.html#graceful