有一个命令让Apache从内存中显示其运行configuration?

有没有办法让Apache Web服务器从内存中显示它的当前运行configuration,即不是通过parsingconfiguration目录中的文件?

我刚刚设法意外覆盖了服务器上的虚拟主机configuration(是的,我知道应该有一个备份!),而我可以很容易地重build它(非常新的服务器,这么简单的configuration,因此没有备份但是 – 这是明天的任务),想知道是否有任何方法让Apache显示其实时运行的configuration,而不仅仅是parsing文件(如httpd -S似乎这样做)。

尝试谷歌search和在这里searchServerFault,但没有发现任何东西。 我可以想象,随着时间的推移,这可能会节省一些人的培根。 🙂

这是如何从内存恢复Apache2configuration:


  1. 抓住这个serverfault线程上提到的dump-all-memory-of-pid.sh脚本。

转储一个Linux进程的内存文件

#!/bin/bash grep rw-p /proc/$1/maps | sed -n 's/^\([0-9a-f]*\)-\([0-9a-f]*\) .*$/\1 \2/p' | while read start stop; do gdb --batch --pid $1 -ex "dump memory $1-$start-$stop.dump 0x$start 0x$stop"; done 
  • 把它放在一个文件中(例如“dump-all-memory-of-pid.sh”)并使其可执行
  • 用法: ./dump-all-memory-of-pid.sh [pid]
  • 输出将打印到名称为pid-startaddress-stopaddress.dump
  • 依赖关系: gdb

  1. 得到你的Apache进程的pid

     pgrep -uroot apache2 

  1. 转储进程的内存

     mkdir /tmp/apache_dump && cd /tmp/apache_dump sh /path/to/dump-all-memory-of-pid.sh <PID> 

  1. grep所有的转储文件的东西,你期望在Apacheconfiguration文件。

     grep DocumentRoot * 

  1. 在vim中打开匹配的转储文件并searchstring。

     vim 24374-7f159d56c000-7f159d72c000.dump 

通过input“/”来search,例如“/ DocumentRoot”,然后简单地复制出你想要的文本。


来源: http : //forums.whirlpool.net.au/archive/2189742