centos7磁盘满了,但是找不到大的文件,原因是没有释放磁盘空间
小白教程,一看就会,一做就成。


1.原因
当centos系统下启动多个服务且没有一定的清理机制时(比如日志),系统磁盘空间很容易就被占满,但是有时候删除了文件却发现系统磁盘空间未释放,可能原因是忽略了有应用一直在往其中写数据,直接删除某文件无法释放磁盘空间
2.解决
lsof -n |grep deleted是发现是否有删除文件的进程存在,如果有就kill掉进程(或者重启进程)
执行(后面加的 >>/data/a.log,是结果写入到/data下的a.log文件里,因为可能输出的太多,页面上没办法看全部)
lsof -n |grep deleted >>/data/a.log

上图是我执行的结果,框住的是进程ID
kill -9 7785
#执行这个时,根目录还没下来,因为这个id对应的文件都太小了

kill -9 13130
#执行这个时,根目录下来了

上面我是手动查找ID,进行删除的
可以用命令自动删除
lsof -n |grep deleted awk '{if (NR > 1){print $2}}' |uniq | xargs kill -9
#解释:
awk '{if (NR > 1){print $2}}',获取第二列
uniq,去重复
xargs kill -9 ,就是将获取第二列,再通过uniq去重的值杀掉
3.完成
