是否有命令可以让 Apache 从内存中显示其运行配置?

是否有命令可以让 Apache 从内存中显示其运行配置?

有没有什么方法可以让 Apache Web 服务器从内存中显示其当前运行的配置,即不通过解析配置目录中的文件?

我刚刚意外地覆盖了服务器上的 vhost 配置(是的,我知道,应该有备份!),虽然我可以相当轻松地重建它(非常新的服务器,如此简单的配置,因此还没有备份 - 这是明天的任务),想知道是否有任何方法可以让 Apache 显示其实时运行的配置,而不仅仅是解析文件(正如 httpd -S 似乎所做的那样)。

尝试过谷歌搜索和在 ServerFault 上搜索,但一无所获。我可以想象这可能会随着时间的推移拯救一些人。:)

答案1

这是从内存中恢复 Apache2 配置的方法:


  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,查找您希望在 apache 配置文件中出现的内容。

    grep DocumentRoot *
    

  1. 在 vim 中打开匹配的转储文件并搜索字符串。

    vim 24374-7f159d56c000-7f159d72c000.dump
    

通过输入“/”进行搜索,例如“/DocumentRoot”,然后只需复制出您想要的文本。


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

相关内容