Today I found myself on someone else’s Apache HTTPD server needing to locate the parent error_log (the one where apache records its startup). The server has a dizzying array of virtual hosts configured using a web of configuration files pulled in with Include directives. Using the configuration files to untangle which is the default virtual host and what it is using for ErrorLog was unfruitful.
My understanding is that the error_log I’m looking is the stderr for the parent apache process. So, punting, I used lsof to see where the parent process was writing stderr, a.k.a. file descriptor 2, which will be reported as ‘2w’ by lsof.
First lookup the parent httpd process. The server runs CentOS using the init system:
[root@xenu ~]# ps -u root | grep httpd 10226 ? 00:07:04 httpd
Using lsof, see what pid 10226 is using for stderr:
[root@xenu ~]# lsof -p 10226 |grep ' 2w' httpd 10226 root 2w REG 8,64 9411 49196 /files/www/virtualhost/RedProject/release1.0/logs/error_log
Another approach is to check the /proc filesystem:
[root@xenu ~]# ls -l /proc/10226/fd/2 l-wx------ 1 root root 64 Apr 1 16:47 /proc/10226/fd/2 -> /files/www/virtualhost/RedProject/release1.0/logs/error_log
Yep, that’s the one.
[root@xenu ~]# grep resuming /files/www/virtualhost/RedProject/release1.0/logs/error_log [Tue Feb 21 12:52:55 2012] [notice] Apache/2.2.3 (CentOS) configured -- resuming normal operations
Leave a comment
Comments feed for this article