linux下磁盘占用达到100%了,找不到哪些大文件耗尽了磁盘。

Linux下的根分区使用率100%,但是查看/分区下的目录都不大,没有占用满,这该怎么处理?
重启是肯定有效的,目前处理情况:重新restart应用后,空间释放出来
1、lsof | grep deletd
2、reboot 重启
linux下磁盘占用达到100%了,找不到哪些大文件耗尽了磁盘。
Linux下使用df -lh
查看磁盘时:
/dev/sda1 130G 123G 353M 100%
/
磁盘快用尽了,
但我这边就是查找不到具体是哪些大文件占用的。
1、如果是大文件占用了,那么查询大于某个值的文件的方法:
find / -size +100c -print
这是从根盘开始查找大于 100字节的文件(至于字节数你当然可以自己设置)
你可以用 find / -size +100c -exec ls -l {}\; 来列出文件属性。
2、如果只是因为有些应用生成的日志文件较多,长时间没有清理后占用了,这种情况最明显的标志为系统空间使用量逐步递增,每天的增量基本相差不大。那么最快捷的方式莫过于询问应用厂商要到日志存放目录后进行清理。如果找不到厂商,那只好自己动手咯,写个脚本查:
#!/bin/ksh
用du命令输出所有目录所占的磁盘空间大小,以G为单位
du -h >fs_du.log
判断各层目录大小,查到占用量大的目录
cat fs_du.log|while read LINE FS_USED
do
if
[ LINEge10]thenecho FS_USED >>result.log
else
exit
fi
done
查看运行结果
more result.log
这样你就能看到占用量比较大的目录,从而有针对性的到相应目录下检查,看到底是什么东西在占用硬盘空间了。
(if [ $LINE -ge 10 ] 这里是判断超过10G的目录,你可以修改)
3、因为人为的误操作,导致了某些进程在没有执行完成的时候被kill掉了,但是缓存中的程序没有释放,仍然在运行,这会产生一些临时文件占用大量的磁盘空间资源,这种现象的特点是爆发式的增长,在很短时间内就将磁盘空间占满。解决的方法:
1、如果是因为父进程被杀除,子进程还运行导致,那么最简单,kill子进程,就会释放。
2、如果能用ipcs确认是哪个用户的进程,那么也不困难,顺着使用ipcrm就行(这个就不一一例举了,有了命令查使用方法还是很方便的)
3、执行进程的用户是比较关键的用户如:root用户、有实例的oracle用户、在线的生产用户等。那么建议在确认是因为共享缓存的原因导致的问题后重启服务器。
4、你已经删除了一些占用量大的文件,或者在根盘下做
du -h
发现占用量远远的小于130G,df的结果仍然是100%的使用率。那么基本肯定你碰到了linux的一个bug,直接重启就能解决。(当然了也不一定是bug,我碰到过那种程序在写一个日志,但是删除日志后空间不释放的问题。这个是linux本身的机制引起的,只需要停止相关的程序空间就会释放的)其实并不是你的磁盘的空间被占用,而是你的磁盘的节点耗尽了。使用:
df -i /dev/sdbx(x为逻辑分区)
命令查看i节点情况。
解决办法:删除占用i节点的空文件,
命令:
rm -rf / -empty -a -type f /opt 分区被web日志堆满了,导致一些服务无法正常运行,于是rm -rf掉这些日志(近11GB),但是服务仍没有恢复正常,用df -hT看,该分区占用还是100%:
[root@anjing opt]# df -hT
但是用 du -sh /opt命令,看到:
[root@anjing /]# du -sh /opt/
8.3G /opt/
应该是删除了这些文件,但是空间没有释放,当然重启可以解决目的,但是会造成服务器上所有业务中断,可使用下面命令查看删除文件占用情况:
[root@anjing opt]# lsof |grep delete

  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux内存占用过高的情况通常有两种情况:一种是系统占用过多的内存,另一种是进程占用过多的内存。 首先,当系统占用过多的内存时,可能是由于以下原因之一: 1. 内核缓存占用过多的内存。Linux会将文件系统的数据缓存到内存中,以提高访问速度。但是,如果系统内存不足时,内核缓存可能会占用大量内存,导致系统运行缓慢。可以通过 `sync` 命令将缓存写入磁盘,或者通过修改 `/proc/sys/vm/drop_caches` 文件来释放缓存。 2. 内存泄漏。某些进程可能会出现内存泄漏问题,导致它们不断分配内存而不释放,最终导致系统内存耗尽。可以使用工具如`top`或`htop`来查看进程的内存使用情况,并尝试终止泄漏的进程。 3. 运行过多的服务或应用程序。如果系统同时运行了大量的服务或应用程序,它们可能会竞争系统资源并导致内存占用过高。可以通过停止或优化不必要的服务和应用程序来减少内存占用。 其次,当进程占用过多的内存时,可能是由于以下原因之一: 1. 内存泄漏。进程内部可能存在代码bug或设计问题,导致它不断分配内存而不释放,最终导致进程内存占用过高。可以使用工具如`valgrind`来检测和修复内存泄漏问题。 2. 错误的内存使用。进程可能错误地使用了大量的内存,例如无限循环、大量数据的拷贝等。可以通过代码审查和性能测试来发现和修复这些问题。 3. 大量数据处理。某些应用程序可能需要处理大量的数据,导致内存占用过高。可以尝试使用更高效的算法或数据结构来减少内存使用,或者考虑使用分布式计算或批处理方式来处理数据。 总而言之,当遇到Linux内存占用过高的情况时,我们需要先确定是系统占用过多的内存还是某个进程占用过多的内存,并根据具体情况采取相应的解决方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值