答案原文:
Linux系统删除文件后空间并没有释放原因及解决方法
https://www.cnblogs.com/shttke/p/16754312.html
二、原因分析
未释放磁盘空间的原因:
在Linux或者Unix系统中,通过rm或者文件管理器删除文件将会从文件系统的文件夹结构上解除链接(unlink),然而假设文件是被打开的(有一个进程正在使用),那么进程将仍然能够读取该文件,磁盘空间也一直被占用。而我删除的是nginx的访问日志文件,在删除的时候该文件正在被使用。
三、解决办法
首先获得一个已经被删除的可是仍然被应用程序占用的文件列表。操作如下:
[root@local ~]# lsof |grep deleted
nginx 4399 root 38w REG 253,0 19304448 10835682 /var/nginx/logs/t-access.log (deleted)
nginx 4399 root 39w REG 253,0 3502080 10835684 /var/nginx/logs/t-error.log (deleted)
nginx 4401 nobody 38w REG 253,0 19304448 10835682 /var/nginx/logs/t-access.log (deleted)
nginx 4401 nobody 39w REG 253,0 3502080 10835684 /var/nginx/logs/t-error.log (deleted)
nginx 4402 nobody 38w REG 253,0 19304448 10835682 /var/nginx/logs/t-access.log (deleted)
nginx 4402 nobody 39w REG 253,0 3502080 10835684 /var/nginx/logs/t-error.log (deleted)
nginx 4403 nobody 38w REG 253,0 19304448 10835682 /var/nginx/logs/t-access.log (deleted)
nginx 4403 nobody 39w REG 253,0 3502080 10835684 /var/nginx/logs/t-error.log (deleted)
nginx 4404 nobody 38w REG 253,0 19304448 10835682 /var/nginx/logs/t-access.log (deleted)
nginx 4404 nobody 39w REG 253,0 3502080 10835684 /var/nginx/logs/t-error.log (deleted)
从输出的结果可以看到 /var/nginx/logs/t-access.log 和 t-error.log 还在被使用中,所以导致未释放空间。
那么如何让进程释放呢?
方法1:直接 kill 掉相应的进程,或者停掉使用这个文件的应用,让操作系统自己主动回收磁盘空间。
由于还有其他项目正在使用该应用(nginx服务),所以不能停掉nginx服务,于是使用 kill 命令删除相应的进程。
[root@local ~]# kill -9 4399
[root@local ~]# kill -9 4401
[root@local ~]# kill -9 4402
[root@local ~]# kill -9 4403
[root@local ~]# kill -9 4404
再次,查看磁盘空间的使用情况,发现空间已经被回收了。
标签:释放,logs,删除,deleted,nginx,Linux,var,253,log From: https://www.cnblogs.com/frankcui/p/17030606.html