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

Pyr*_*cer 5 virtualhost apache-2.4

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

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

在 ServerFault 上尝试谷歌搜索和搜索,但没有找到任何东西。我可以想象随着时间的推移,这可能会节省一些人的培根。:)

Fro*_*giz 6

这是从内存中恢复 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
Run Code Online (Sandbox Code Playgroud)
  • 把它放在一个文件中(例如“dump-all-memory-of-pid.sh”)并使其可执行
  • 用法: ./dump-all-memory-of-pid.sh [pid]
  • 输出将打印到具有以下名称的文件中: pid-startaddress-stopaddress.dump
  • 依赖项: gdb

  1. 获取你的 apache 进程的 pid

    pgrep -uroot apache2
    
    Run Code Online (Sandbox Code Playgroud)

  1. 转储进程的内存

    mkdir /tmp/apache_dump && cd /tmp/apache_dump
    sh /path/to/dump-all-memory-of-pid.sh <PID>
    
    Run Code Online (Sandbox Code Playgroud)

  1. grep 将所有转储文件用于您希望在 apache 配置文件中的内容。

    grep DocumentRoot *
    
    Run Code Online (Sandbox Code Playgroud)

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

    vim 24374-7f159d56c000-7f159d72c000.dump
    
    Run Code Online (Sandbox Code Playgroud)

通过键入“/”进行搜索,例如“/DocumentRoot”,然后简单地复制出您想要的文本。


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