之前遇到的磁盘df -h 和du -sh * 查看文件大小结果不一致,发生这种情况的原因一般有两种:
1.有隐藏文件
2.磁盘空间未释放(被删除的文件正在被进程使用,所以linux系统认为文件还存在,不对其空间进行释放。)
解决思路:
lsof | grep deleted 找到未释放的进程,第7列字段为文件的大小,找出文件占用最大的进程${PID}(第二列)
/proc/${PID}/fd 这是个目录,包含当前进程打开的每一个文件的文件描述符
进入到/proc/${PID}/fd 然后 ll | grep deleted 找到对应的 描述符ID 然后 清空即可释放磁盘空间,
找到这种含deleted 软连接的 ,然后清空描述符ID
echo " " > 4
注意: 该方法只是临时释放磁盘空间,进程并没有被kill 所以可能任会存在磁盘被占用的情况,只有该进程所在服务重启进程被杀死才会完全释放