背景#
在公司维护自己的组件页面时,为了图方便直接在服务器上调试的 Nginx.conf
好不容易调的差不多了,Nginx 也跑起来了,习惯性的要删除一些临时的文件
结果手滑 直接一发 rm -rf nginx* 把服务器 Nginx 配置啥的都删了。
而且本地也没备份 也没推 GIT..
好在网上有高人啊,算是整回来了。特此记录一下
实操#
- yum install gdb 安装 gdb 之后,找到 Nginx master 的进程 ID
- 执行下面命令
# 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_*
- 最后 grep server_name mem_* 命令输出了包含 server_name 的文件。
[root@centos]# grep server_name mem_*
匹配到二进制文件 mem_558f03f58000
匹配到二进制文件 mem_558f0416f000
- 下载文件之后,用 Visual Studio Code (由于是二进制文件,不要用 sublime 之类的打开,会是乱码) 打开,全局检索一下,就能看到熟悉的配置信息了。
- 文件开始大概位置可以用 http { 定位
6. 虽然不能直接复制粘贴的使用,但是也算找回来了,谁让自己手欠呢 QAQ