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 (文件描述符):
2和3 - 文件路径:
/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
SundayHK