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 reload2. 清空并释放单个文件空间 (备用方式)
如果您不想重启或发送信号给 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
																		SundayHK
											