Linux根目录爆满,解决(/dev/mapper/rhel-root 98%问题)
1.1 首先确定是否是磁盘空间不足
1.1.1 输入命令:
df –h 查看磁盘信息
1.1.2 发现已经使用率达到98%(通常是98%,但是这里我已经改过),所有需要删除大文件数据
2.1 其次查找大文件
du -h --max-depth=1 命令代表寻找当前目录,哪个文件夹占用空间最大
2.1.1
进入根目录
cd / ------进入根目录
du -h --max-depth=1 -------寻找当前目录,哪个文件夹占用空间最大
2.1.2 找到对应文件夹,发现占用N个G,确定是否有用,无用则删除
2.2 文件有用的话进入到对应的文件
cd /对应的文件
2.2.1 找到对应的文件之后,找到对应文件下的logs(在日志目录)
2.2.2 除了.out目录尽量别删(看自己的需求),其他的都可以删
2.2.3 清除catalina.out方法 (logs目录下其他文件手动删除即可,也可以用命令)
使用命令
du -h catalina.out ----------(可以看到.out目录的大小)
true>catalina.out -----------(直接清除.out文件)
注意事项
6.6由于df是计算的进程占用空间,du -h 计算的实际文件占用空间,所以会导致以下情况发生
6.6.1 如果删除了文件,但是磁盘空间还是没有释放,那是进程还在导致的。可以通过以下操作
lsof -n |grep deleted --------------( 根目录下,可以看看空间占用情况)
6.7找到占用内存最大的,并且确定不用的可以用kill -9 pid 删除pid为对应的进程号即可
6.7.1 但是/分区下面的目录,每个查询加起来也不到4G空间,多出来的40G不知道在哪里?
find查询也没有找到大文件;
6.7.2 分析原因:
可能是系统进程占用的空间没有释放掉,导致的;
通过命令查看发现,进程有很多个,都是处于deleted状态,文件大小刚好是对应,正好是多出来的空间,找到问题所在;
6.7.3解决办法:
找到对应的进程号,kill掉即可;
6.7.8 查看空间已经恢复:
df -h
最后重启服务即可
9.9 不能解决 可以试试 ps aux|grep java命令
ps aux|grep java
ps aux
9.9.1 stat 中的参数意义如下:
D 不可中断 Uninterruptible(usually IO)
R 正在运行,或在队列中的进程
S 处于休眠状态
T 停止或被追踪
Z 僵尸进程
W 进入内存交换(从内核2.6开始无效)
X 死掉的进程
< 高优先级
n 低优先级
s 包含子进程
+ 位于后台的进程组
9.9.2 使用ps格式输出来查看进程状态:
ps -eo user,stat..,cmd
user 用户名
uid 用户号
pid 进程号
ppid 父进程号
size 内存大小, Kbytes字节.
vsize 总虚拟内存大小, bytes字节(包含code+data+stack)
share 总共享页数
nice 进程优先级(缺省为0, 最大为-20)
priority(pri) 内核调度优先级
pmem 进程分享的物理内存数的百分比
trs 程序执行代码驻留大小
rss 进程使用的总物理内存数, Kbytes字节
time 进程执行起到现在总的CPU暂用时间
stat 进程状态
cmd(args) 执行命令的简单格式
版权声明:本文为yx_smile原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。