Note-51077-6

Token ID: 1

ERC-721 1 Transfers

Metadata

{
  "title": "记一次从内存中恢复Nginx配置的操作",
  "tags": [
    "post",
    "Linux",
    "Centos",
    "Nginx"
  ],
  "summary": "背景 在公司维护自己的组件页面时,为了图方便直接在服务器上调试的Nginx.conf\n 好不容易调的差不多了,Nginx也跑起来了,习惯性的要删除一些临时的文件\n 结果手滑 直接一发 rm -rf nginx* 把服务器Nginx配置啥的都删了。\n 而且本地也没备份 也没推GIT..…",
  "sources": [
    "xlog"
  ],
  "external_urls": [
    "https://daxin-6967.xlog.app/Nginx"
  ],
  "date_published": "2023-03-25T05:12:00.975Z",
  "content": "## 背景\n\n在公司维护自己的组件页面时,为了图方便直接在服务器上调试的Nginx.conf\n好不容易调的差不多了,Nginx也跑起来了,习惯性的要删除一些临时的文件\n结果手滑 直接一发 rm -rf nginx*  把服务器Nginx配置啥的都删了。\n而且本地也没备份 也没推GIT.. \n好在网上有高人啊,算是整回来了。特此记录一下\n\n## 实操\n1. yum install gdb 安装gdb之后,找到Nginx master的进程ID\n2. 执行下面命令\n```\n# Set pid of nginx master process here\npid=339\n\n# generate gdb commands from the process's memory mappings using awk\ncat /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\n\n# use gdb with the -x option to dump these memory regions to mem_* files\ngdb -p $pid -x gdb-commands\n\n# look for some (any) nginx.conf text\ngrep worker_connections mem_*\ngrep server_name mem_*\n```\n3. 最后 grep server_name mem_* 命令输出了包含 server_name 的文件。\n```\n[root@centos]# grep server_name mem_*\n匹配到二进制文件 mem_558f03f58000\n匹配到二进制文件 mem_558f0416f000\n```\n4. 下载文件之后,用 Visual Studio Code (由于是二进制文件,不要用sublime之类的打开,会是乱码)打开,全局检索一下,就能看到熟悉的配置信息了。\n5. 文件开始大概位置可以用  http { 定位\n\n![image](ipfs://bafkreihxxzkebzgazwkim5beaxqmholgu37ocktah65tejaujr4jb4n4qq)\n6. 虽然不能直接复制粘贴的使用,但是也算找回来了,谁让自己手欠呢 QAQ\n\n## 参考链接\nhttps://segmentfault.com/a/1190000040692850",
  "attributes": [
    {
      "value": "Nginx",
      "trait_type": "xlog_slug"
    }
  ]
}