我的团队试图更新nginx配置df = pd.DataFrame()
for url in url_baseball_players:
df = pd.concat([df, pd.DataFrame(scrape_baseball_data(url))])
,当他试图突然保存文件无法保存文件时,由于磁盘大小问题,现在文件为空(大小为0) 。有没有办法根据当前的nginx conf创建一个新的配置文件?由于编辑了文件,nginx服务器还没有重新启动,因此,它仍然正常工作,我们没有sites-available/mysite.com
文件的最新备份,因此我更愿意恢复存在于内存中的当前配置。
谢谢。
答案 0 :(得分:7)
首先尝试此操作之前,请确保您的服务器上有足够的空间,并且您还需要拥有sudo权限。
查找主要的nginx进程
您需要的第一件事是找到nginx的主要流程
$ ps aux | grep nginx
root 3890 0.0 0.1 124972 1424 ? Ss 06:06 0:00 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
www-data 3891 0.0 0.3 125332 3128 ? S 06:06 0:00 nginx: worker process
正如您所看到的,我的主要nginx进程是3890
pid。
查找内存映射 接下来,我们需要检查进程使用的内存映射
$ sudo cat /proc/3890/maps
55698ed20000-55698ee2e000 r-xp 00000000 fc:00 414469 /usr/sbin/nginx
55698f02e000-55698f030000 r--p 0010e000 fc:00 414469 /usr/sbin/nginx
55698f030000-55698f04c000 rw-p 00110000 fc:00 414469 /usr/sbin/nginx
55698f04c000-55698f06c000 rw-p 00000000 00:00 0
556990d72000-556990dd5000 rw-p 00000000 00:00 0 [heap]
7f4cfa551000-7f4cfa55c000 r-xp 00000000 fc:00 1314482 ....
7f4d01f70000-7f4d01f71000 rw-p 00000000 00:00 0
7ffde6f5e000-7ffde6f7f000 rw-p 00000000 00:00 0 [stack]
7ffde6f9a000-7ffde6f9c000 r--p 00000000 00:00 0 [vvar]
7ffde6f9c000-7ffde6f9e000 r-xp 00000000 00:00 0 [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall]
现在会有很多输出,但不要担心我们主要对[heap]
部分感兴趣。内存位于556990d72000-556990dd5000
。
倾倒堆
现在你需要转储堆。确保已安装gdb
。使用
$ sudo gdb -p 3890
您将收到(gdb)
提示。现在在此提示符下使用我们之前提到的地址
(gdb) dump memory /tmp/nginx-memory 0x556990d72000 0x556990dd5000
从转储中获取字符串数据
现在我们的转储在/tmp/nginx-memory
处可用,现在我们需要从中获取字符串数据
$ sudo strings /tmp/nginx-memory > /tmp/nginx-memory.str
查找Nginx配置
现在你有一个内存转储。大多数配置都有http {
行,现在您可以测试/tmp/nginx-memory.str
相同的
$ grep -A 20 "http {" /tmp/nginx-memory.str
http {
# Basic Settings
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
# server_tokens off;
# server_names_hash_bucket_size 64;
# server_name_in_redirect off;
include /etc/nginx/mime.types;
default_type application/octet-stream;
# SSL Settings
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
ssl_prefer_server_ciphers on;
# Logging Settings
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
# Gzip Settings
gzip on;
gzip_disable "msie6";
--
http {
# Basic Settings
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
# server_tokens off;
# server_names_hash_bucket_size 64;
# server_name_in_redirect off;
include /etc/nginx/mime.types;
default_type application/octet-stream;
# SSL Settings
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
ssl_prefer_server_ciphers on;
# Logging Settings
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
# Gzip Settings
gzip on;
gzip_disable "msie6";
仔细查看此文件并恢复配置并创建一个新文件