在linux系统中怎么样查找到大文件?

来源:互联网 发布:ug8.0编程实例 编辑:程序博客网 时间:2024/05/15 23:52

在UNIX中工作的常见问题之一是找到大文件来释放一些空间。假设您的文件系统已满,并且您收到警报释放空间,或者如果主机空间不足,并且您的服务没办法启动,您首先要查找的是十大文件,看看是否可以删除大文件。如果是Java应用程序或在Tomcat上运行的Web应用程序,那么可以删除这些堆文件释放出空间,但最重要的问题是如何找到它们?你如何知道文件系统中最大文件的大小,在哪个目录?我们将在本文中尝试找到其中一些问题的答案。

当我刚刚到Linux时,我没有别的选择,只能去日志目录,查找更大的旧文件并删除它们。服务器运行得很好,直到有一天我们的服务器因为特大的缓存文件被挂掉。无法定位到文件所在目录,然后我开始了解find命令,且搜索大文件的子目录,如下所示:

$ find . -size +1G

如上命令将从当前目录和及子目录打印出大于1GB的所有文件。唯一的问题是它不能精确的打印出大小。使用 -printf选项可以解决问题,该选项允许您指定格式String,就像Java的printf()方法一样。

进一步调整命令来查找文件,且精确的打印出文件大小。

$ find . -size +1G -printf '%s %p\n'

%s表示大小,%p表示路径。

或者,还可以使用-exec选项在每个文件上运行ls,find命令返回且打印其大小,如下所示:

$ find . -size +100M -exec ls -sh {} \;

这个命还算可以,够用。让我们接着看看更好的一种用法,如下命

$ du -a . | sort -n -r | head -n 1016095096 .13785288 ./logs6095380 ./logs/app2125252 ./temp2125244 ./temp/data2125240 ./temp/data/app

此命令以排序的方式列出了大小前10的目录和文件,如此一天就很容易定位到大文件所在位置

翻译:http://www.java67.com/2017/08/how-to-find-large-files-with-size-in-Linux.html

原创粉丝点击