系统内存空间满,定位。
- 首先查看内存使用情况
df -hl 或者 df -h /home
看到可用内存只剩3.3G
- 查找占用内存最大的目录,如何定位最大文件目录
输入命令: cd / 进入根目录。
输入命令:du -h --max-depth=1 寻找当前目录,哪个文件夹占用空间最大
以上两个命令之后,可以看到 /usr 此路径占用较大磁盘空间,占用了24G。眼尖的同学可能看到了最后一项显示41G,它表示当前目录所有文件占用磁盘空间总和容量是41G。
依次类推,一级一级往下找。几番判断后,定位到tomcat的日志文件。
- 如何定位最大文件
输入命令:ls –lhS 将文件以从大到小顺序展现
最终定位文件为:catalina.out 这个日志文件。 - 删除文件,确认文件未被占用
删除文件谁都会:rm –rf catalina.out 但是,最好确认下是否要下载下来让开发人员分析日志。
辛苦一阵找到文件,删除了很开心,输入命令:df –hl 发现磁盘空间仍是满的状态。跟图一完全没有区别。难道说是需要重启系统吗?linux会这么不友好么?
答案是否定的。在Linux或者Unix系统中,通过rm或者文件管理器删除文件将会从文件系统的目录结构上解除链接(unlink).然而如果文件是被打开的(有一个进程正在使用),那么进程将仍然可以读取该文件,磁盘空间也一直被占用。
输入命令:lsof |grep delete
如果不能使用lsof 命令,则下载输入yum命令安装
yum install lsof
然后输入lsof | grep deleted 确认删除文件是否被占用
查看已删除但是未释放空间的文件:lsof | grep deleted
删除已删除但是未释放空间的文件:lsof | grep deleted | awk ‘{print $2}’ | xargs -I {} kill -9 {}
确实被占用。根据第二列提供的pid,输入命令:kill -9 13117 杀掉进程。
再次输入命令:df –hl
发现内存释放。
总结
- df -hl 查看内存使用状况
- du -h --max-depth=1 寻找占用内存最大的文件
- 确认可删除后 rm –rf 文件名 删除
- 确认文件未被占用 lsof | grep deleted
- 被占用 杀进程 kill -9 pid