第一步,确定是不是磁盘空间不足的问题
输入命令:df -lh
查看磁盘信息
如下图:
很明显:Filesystem下的挂载点 /dev/xvda1
,下的40G容量已经耗尽。
既然出现问题的原因已经确定了,接下来就是处理问题了。
处理方法也很简单,就是删文件。
问:删除什么文件?
答:删除占用磁盘空间大,但又无用的文件。
问:什么是无用的文件?
答:如果对系统不熟悉的话,日志可能是你第一的下手目标。
第二步,定位最大文件
输入命令:cd /
进入根目录。
然后输入命令寻找当前目录,哪个文件夹占用空间最大:
du -h --max-depth=1
或者:列举磁盘上占用空间前 10 的目录和占用空间大小。
du -h --max-depth=1 | sort -hr | head -n 10
以上两个命令之后,可以看到 /usr 此路径占用较大磁盘空间,占用了21G。
眼尖的同学可能看到了最后一项显示24G,它表示当前目录所有文件占用磁盘空间总和容量是24G。经过几番判断后,最后定位到 tomcat 的日志文件。
由上图可以判断,17G文件在当前目录文件中。
输入命令:ls –lhS
将文件以从大到小顺序展现
最终定位文件为:catalina.out 这个日志文件。
第三步,删除文件
删除命令:
rm –f catalina.out
删除之前最好确认下是否要下载来提供给开发人员分析日志。
成功删除文件后输入命令:df -lh
,发现磁盘空间仍是满的状态。跟图一完全没有区别。
难道说是需要重启系统吗?LINUS会这么不友好么?
谷歌一下,发现了这么一段话:
在Linux或者Unix系统中,通过
rm
或者文件管理器删除文件将会从文件系统的目录结构上解除链接(unlink),然而如果文件是被打开的(有一个进程正在使用),那么进程将仍然可以读取该文件,磁盘空间也一直被占用。
输入命令:确认删除文件是否被占用
/usr/sbin/lsof | grep deleted
确实被占用。根据第二列提供的pid
,输入命令:kill -9 13117 杀掉进程。再次输入命令:
df -lh
如此,磁盘空间就被释放了。
评论区