Linux下nginx日志文件删除但是空间不释放没变化,主要原因就是这个文件虽然被删除了,但是系统里还有进程在使用这个文件,系统认为文件还在用,就没有立即释放空间。
只要有程序在读取这个文件,那么文件还是存在,没有删除掉文件出在在读取的状态,还是占用磁盘空间。
可以通过查看当前文件被哪些进程使用,但是文件名已经没有了,我们只能通过lsof这个命令列出所有的删除状态文件
[root@local ~]# lsof |grep deleted nginx 4699 root 39w REG 253,0 19307778 10835682 /var/nginx/logs/access.log (deleted)
除了上述,lsof还可以查看当前目录文件被哪些进程使用
lsof /xx/
lsof /var/log/nginx/access.log
通过上述,可以判断出access日志文件正在被使用,解决方式很简单,只需重启一下nginx进程即可
nginx -s reload 执行,即可释放,而且不影响业务,当然简单粗暴也可直接kill掉nginx进程,在启动也可以 kill -9 pid或者更粗暴的
killall nginx
还有一种更简单方法就是,不要删除文件,直接把文件清空,这样也不需要重启nginx或者杀掉nginx进程
echo "" > access.log即可
评论列表