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

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。