从正在运行的 nginx 进程中转储 conf

Posted

技术标签:

【中文标题】从正在运行的 nginx 进程中转储 conf【英文标题】:dump conf from running nginx process 【发布时间】:2012-10-01 16:09:36 【问题描述】:

是否可以仅从正在运行的 nginx 进程中获取 nginx 正在使用的 conf?

获取conf文件路径。有时ps aux 透露,有时不透露。它可能只是类似于nginx: master process /usr/sbin/nginx(与/proc/PID/cmdline 相同)

    那么nginx -V 是唯一的解决方案吗? 来自this question,是否可以直接从nginx进程中转储conf数据结构?或者至少转储 conf 文件路径?

【问题讨论】:

这里的场景是什么?为什么要这样做? 我正在着手管理其他管理员留下的服务器。我想自动化这些事情。适合批量采集数据。 【参考方案1】:

从 Nginx 1.9.2 开始,您可以使用 -T 标志转储 Nginx 配置:

-T — 与 -t 相同,但另外将配置文件转储到标准输出 (1.9.2)。

来源:http://nginx.org/en/docs/switches.html

这与特定进程的转储不同。如果您的 Nginx 使用不同的配置文件,请检查 ps aux 的输出并使用它提供的任何二进制文件,例如如果它给出类似的东西

nginx: master process /usr/sbin/nginx -c /some/other/config

你需要运行

/usr/sbin/nginx -c /some/other/config -T

如果您还没有使用 1.9.2,您可以使用 gdb 转储配置:

https://serverfault.com/questions/361421/dump-nginx-config-from-running-process

【讨论】:

如果配置文件输出较长,可以dump到一个文件中:sudo nginx -T > nginx-config.txt 太棒了!多亏了这个,我才能够恢复我意外覆盖的站点配置文件! :D -T 不会转储正在运行的进程的配置,它只显示从所有 NGINX 配置文件、主文件和所有包括例如读取的配置。网站设置。您需要使用 GDB(来自上面的链接)来获取当前加载的配置。

以上是关于从正在运行的 nginx 进程中转储 conf的主要内容,如果未能解决你的问题,请参考以下文章

从附加到 ddd/dbx 的崩溃进程生成核心转储

分析在 Kubernetes Linux 中运行的 dotnet 核心进程的内存转储

进程的 GDB 全内存转储

c#中的新进程tcp转储

如何从正在运行的应用程序的堆转储中提取 java 类定义?

生成子进程的核心转储文件