有没有办法让Apache Web服务器从内存中显示它的当前运行configuration,即不是通过parsingconfiguration目录中的文件?
我刚刚设法意外覆盖了服务器上的虚拟主机configuration(是的,我知道应该有一个备份!),而我可以很容易地重build它(非常新的服务器,这么简单的configuration,因此没有备份但是 – 这是明天的任务),想知道是否有任何方法让Apache显示其实时运行的configuration,而不仅仅是parsing文件(如httpd -S似乎这样做)。
尝试谷歌search和在这里searchServerFault,但没有发现任何东西。 我可以想象,随着时间的推移,这可能会节省一些人的培根。 🙂
这是如何从内存恢复Apache2configuration:
转储一个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 [pid] pid-startaddress-stopaddress.dump gdb 得到你的Apache进程的pid
pgrep -uroot apache2
转储进程的内存
mkdir /tmp/apache_dump && cd /tmp/apache_dump sh /path/to/dump-all-memory-of-pid.sh <PID>
grep所有的转储文件的东西,你期望在Apacheconfiguration文件。
grep DocumentRoot *
在vim中打开匹配的转储文件并searchstring。
vim 24374-7f159d56c000-7f159d72c000.dump
通过input“/”来search,例如“/ DocumentRoot”,然后简单地复制出你想要的文本。
来源: http : //forums.whirlpool.net.au/archive/2189742