DaXin Space

DaXin Space

5rKh6ZSZIOi/meaYr+S4gOS4qkJhc2U2NCDkvaDmmK/lr7nnmoQ=
github

记一次从内存中恢复Nginx配置的操作

背景#

在公司维护自己的组件页面时,为了图方便直接在服务器上调试的 Nginx.conf
好不容易调的差不多了,Nginx 也跑起来了,习惯性的要删除一些临时的文件
结果手滑 直接一发 rm -rf nginx* 把服务器 Nginx 配置啥的都删了。
而且本地也没备份 也没推 GIT..
好在网上有高人啊,算是整回来了。特此记录一下

实操#

  1. yum install gdb 安装 gdb 之后,找到 Nginx master 的进程 ID
  2. 执行下面命令
# Set pid of nginx master process here
pid=339

# generate gdb commands from the process's memory mappings using awk
cat /proc/$pid/maps | awk '$6 !~ "^/" {split ($1,addrs,"-"); print "dump memory mem_" addrs[1] " 0x" addrs[1] " 0x" addrs[2] ;}END{print "quit"}' > gdb-commands

# use gdb with the -x option to dump these memory regions to mem_* files
gdb -p $pid -x gdb-commands

# look for some (any) nginx.conf text
grep worker_connections mem_*
grep server_name mem_*
  1. 最后 grep server_name mem_* 命令输出了包含 server_name 的文件。
[root@centos]# grep server_name mem_*
匹配到二进制文件 mem_558f03f58000
匹配到二进制文件 mem_558f0416f000
  1. 下载文件之后,用 Visual Studio Code (由于是二进制文件,不要用 sublime 之类的打开,会是乱码) 打开,全局检索一下,就能看到熟悉的配置信息了。
  2. 文件开始大概位置可以用 http { 定位

image
6. 虽然不能直接复制粘贴的使用,但是也算找回来了,谁让自己手欠呢 QAQ

参考链接#

https://segmentfault.com/a/1190000040692850

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。