威尼斯wns.9778官网活动_vnsc威尼斯城官网

热门关键词: 威尼斯wns.9778官网活动,vnsc威尼斯城官网
当前位置:威尼斯wns.9778官网活动 > 计算机教程 > linux 查找大目录和大文件的方法(推荐)威尼斯wn

linux 查找大目录和大文件的方法(推荐)威尼斯wn

文章作者:计算机教程 上传时间:2019-05-11

今天,在机器上执行命令的时候,发现tab键无法补全了,原因竟然是磁盘空间满了,使用df命令看了一下,确实如此,每个分区的使用率都得到100%了,因此想找到系统中的大目录和大文件,删除一部分。

 

主要涉及到两个命令 du和find

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 
[ LINE−ge10]thenechoFS_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

du命令(查找系统中的大目录):

-h已易读的格式显示指定目录或文件的大小

-s选项指定对于目录不详细显示每个子目录或文件的大小

-m或–megabytes 以1MB为单位

–max-depth=1:其中,数字“1”是指查询结果中最多显示的目录层数,这里指最多显示一层目录。

首先使用df命令,查看各挂载点磁盘空间的使用情况,然后从使用率接近100%的目录下,查看其各个子目录的大小情况

du -sm * 2> /dev/null  | sort -nr | head -5

可以使用sort对du输出的结果进行一个排序(如果du使用h参数,可能得不到正确的排序结果)

以上方法只是对目录大小进行判定,所以当确定某目录过大时,最好是cd到该目录,查看下有无大文件,然后再确定是否进入下一层目录。

本文由威尼斯wns.9778官网活动发布于计算机教程,转载请注明出处:linux 查找大目录和大文件的方法(推荐)威尼斯wn

关键词: