NGINX 日志文件RM删除后不释放

2025-10-31 5 0

nginx日志文件删除后不释放
原因是nginx 进程还打开着被删除的日志文件
解决:优雅地关闭Nginx并重新打开其日志文件句柄

sudo lsof | grep deleted

root@openresty51:# sudo lsof | grep deleted

nginx      1807                  root    2w      REG               8,16 14030301488    5734648 /data/logs/nginx/error.log (deleted)

nginx      1807                  root    3w      REG               8,16 14030301488    5734648 /data/logs/nginx/error.log (deleted)

nginx      4705                   www    2w      REG               8,16 14030301488    5734648 /data/logs/nginx/error.log (deleted)

nginx      4705                   www    3w      REG               8,16 14030301488    5734648 /data/logs/nginx/error.log (deleted)

nginx      4706                   www    2w      REG               8,16 14030301488    5734648 /data/logs/nginx/error.log (deleted)

nginx      4706                   www    3w      REG               8,16 14030301488    5734648 /data/logs/nginx/error.log (deleted)

nginx      4707                   www    2w      REG               8,16 14030301488    5734648 /data/logs/nginx/error.log (deleted)

nginx      4707                   www    3w      REG               8,16 14030301488    5734648 /data/logs/nginx/error.log (deleted)

nginx 进程仍然打开着被删除的日志文件和缓存文件

sudo kill -USR1 $(cat /path/to/nginx.pid) 
sudo kill -USR1 1807

粗爆

sudo nginx -s reload

2. 清空并释放单个文件空间 (备用方式)

如果您不想重启或发送信号给 Nginx,可以单独对 /data/logs/nginx/error.log (deleted) 进行清空操作。

确定目标:

  • PID: 1807 (Nginx 主进程)
  • FD (文件描述符): 23
  • 文件路径:/proc/<PID>/fd/<FD>,即 /proc/1807/fd/2/proc/1807/fd/3

执行清空命令:

# 清空 FD 2
sudo truncate -s 0 /proc/1807/fd/2 

# 清空 FD 3
sudo truncate -s 0 /proc/1807/fd/3 

相关文章

Nginx后端获取CDN用户真实IP
Nginx使用Geoip2模块 解析客户端IP地理信息 限定国家区域访问
Nginx 允许多个域名跨域访问
nginx-module-vts监控虚拟主机的流量
Nginx上传大文件慢 解决
nginx 1.22 编译webdav插件

发布评论