在我的服务器中,我发现/var/log/apache2/
,日志是在access.log
几天前生成的,但是是空的(对于访问日志和错误日志都是如此),这发生在我的服务器上配置的所有虚拟主机上,
到目前为止,所有新日志都已添加access.log.1
,我需要将所有新日志添加到文件access.log
中Error.log
。
如何解决此问题?
/etc/logrotate.d/apache2
如下:
/var/log/apache2/*.log {
weekly
missingok
rotate 52
compress
delaycompress
notifempty
create 644 root adm
sharedscripts
postrotate
if [ -f "`. /etc/apache2/envvars ; echo ${APACHE_PID_FILE:-/var/run/apache2.pid}`" ]; then
/etc/init.d/apache2 reload > /dev/null
fi
endscript
}
編輯:我刚发现 /etc/init.d/apache2 文件几天前就空了,我不知道怎么回事!!有什么办法可以恢复它吗?我的 apache 版本是:Apache/2.2.12 (Ubuntu)
答案1
在您的/etc/logrotate.d/apache2
文件中您有:
if [ -f "`. /etc/apache2/envvars ; echo ${APACHE_PID_FILE:-/var/run/apache2.pid}`" ]; then
/etc/init.d/apache2 reload > /dev/null
fi
. /etc/apache2/envvars ; echo ${APACHE_PID_FILE:-/var/run/apache2.pid}
意味着它将首先获取文件/etc/apache2/envvars
,然后如果变量APACHE_PID_FILE
存在,它将打印其值,该值将是包含 PID 的文件apache
,如果变量不存在,它将默认为值/var/run/apache2.pid
。
of -f
( test
)[
命令表示检查PID是否存在,如果找到则运行:
/etc/init.d/apache2 reload > /dev/null
这将重新加载的配置apache
。
您的情况下文件/etc/init.d/apache2
丢失,因此apache
无法重新加载配置,从而导致logrotate
在保存新日志时/var/log/apache/access.log
出现错误行为/var/log/apache/error.log
。