如何在Linux中查找大文件和目录
在Linux服务器中查找大文件和目录的大小是每位系统管理员日常工作中遇到的最重要的任务之一。
因此,每个系统管理员都必须知道多种方法来找出较大的磁盘和占用硬盘的文件的大小。
有时,当系统磁盘的填充速度如此之快并且我们必须发现正在吸收哪些文件或者目录时,Linux上的所有磁盘区域就变得尤为重要。
在这种情况下,我们应该能够找到要填充数据的特定目录位置。
由于没有这样的快捷方式命令可用于发现Linux或者UNIX文件系统上最大的文档或者目录,但是通过使用某些命令行实用程序可以帮助我们到达源位置,则存在一定的可能性。
因此,本教程将使用可以在Linux或者UNIX之类的系统上使用的多个命令,以查找文件系统上最大的文件或者目录。
1)使用find命令
“查找”命令对于在目录层次结构中搜索文件以及在系统中搜索查找大文件和目录非常有用。
让我们运行下面的命令来列出所有大小大于50MB的文件,我们可以指定更大的数字。
# find/-xdev -type f -size +50M
要查找有关这些大文件的更详细的结果,可以在参数下方扩展“ find”命令。
# find/-xdev -type f -size +50M -exec ls -alh {} \; | sort -nk 5
使用以下命令在系统的特定目录中查找最大10个文件。
# find /usr -type f -printf "%s %p\n" | sort -rn | head -n 10
114973832 /usr/share/fonts/opentype/noto/NotoSansCJK.ttc 83333096 /usr/lib/thunderbird/libxul.so 78809336 /usr/lib/x86_64-linux-gnu/libOxideQtCore.so.0 71551944 /usr/lib/firefox/libxul.so 58250232 /usr/lib/libreoffice/program/libmergedlo.so 41729688 /usr/lib/x86_64-linux-gnu/libwebkit2gtk-4.0.so.37.19.4 41587032 /usr/lib/x86_64-linux-gnu/libLLVM-3.8.so.1 41294304 /usr/lib/x86_64-linux-gnu/webkit2gtk-4.0/WebKitPluginProcess2 37857816 /usr/lib/x86_64-linux-gnu/libQt5WebKit.so.5.5.1 35945726 /usr/local/bin/consul
2)使用ls命令
“ ls”是Linux shell命令,列出了文件和目录的目录内容。
我们可以通过多种方式使用此命令来列出文件和文件夹。
要检查列表中当前目录中文件的大小,请按以下顺序在顶部运行,然后按大小顺序以更大的大小排列。
# ls -alhS
-rw------- 1 root root 59K Apr 18 20:57 agedu.dat -rw------- 1 root root 13K Apr 20 18:27 .gt5.html -rw-r--r-- 1 root root 10K Jan 25 03:43 index.html -rw------- 1 root root 4.1K Apr 22 22:06 .bash_history drwx------ 6 root root 4.0K Apr 18 20:57 . drwxr-xr-x 24 root root 4.0K Apr 17 10:40 .. drwx------ 2 root root 4.0K Apr 20 17:03 .cache drwx------ 3 root root 4.0K Apr 12 15:38 .gnupg drwx------ 2 root root 4.0K Apr 20 18:27 .gt5-diffs drwx------ 2 root root 4.0K Apr 20 18:29 .w3m -rw-r--r-- 1 root root 3.1K Oct 22 2014 .bashrc -rw------- 1 root root 1.1K Apr 12 15:43 .viminfo -rw-r--r-- 1 root root 148 Aug 17 2014 .profile
同样,我们可以使用'ls'命令添加'r'来递归地显示当前目录中文件的大小,或者我们可以指定该目录的路径以查看那里存在的文件的大小。
# ls -lhtr
# ls -lhtr /var/log/
要递归地获得当前目录中前十大文件的列表,请使用以下命令。
# ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n10
456K initial-status.gz 356K syslog 248K dpkg.log 216K syslog.1 168K kern.log 160K kern.log.1 100K dpkg.log.2.gz 96K partman 92K syslog 84K syslog.6.gz
要获得更多使用“ ls”命令的帮助,可以使用以下命令。
# ls --help
3)使用gt5工具
“ gt5”是另一个很棒的命令行工具,可用于检查Linux系统上文件和目录的大小。
但是,必须先将其安装在系统上,然后才能开始使用它。
要安装“ gt5”,我们可以在Linux系统上执行以下命令。
# apt install gt5
安装后,我们可以使用以下命令使用它来检查系统文件和目录的大小。
# gt5
# gt5 /var
我们可以指定任何由“ gt5”命令扩展的目录,以检查最大尺寸的目录和文件。
要进一步扩展目录,请在该目录上拖动鼠标光标,然后按Enter。
# gt5 /var/log
让我们将目录更改为另一个路径,然后对顶级文件和目录的内部视图运行“ gt5”命令。
# cd /usr/src/linux-headers-4.10.0-20-generic/
#gt5
4)使用du命令
“ du”命令缩写为磁盘使用情况,报告目录树的大小(包括其所有内容)和单个文件的大小。
这对于跟踪空间消耗(即在硬盘驱动器或者其他存储介质上消耗大量或者过多空间的目录和文件)很有用。
“ du”的基本语法如下所示。
# du [options] [directories and/or files]
要查找Linux/UNIX文件系统上的顶级文件和目录,没有任何适当的du命令来获取所需的输出,而是将其与其他命令(例如“ sort”,“ head”和“ find”命令)一起使用,如下所示。
要以更易读的形式获取输出,可以在“ du”命令中使用“ -h”参数。
# du -ah /var | sort -n -r | head -n 10
1020K /var/cache/apt/archives/fonts-dejavu-core_2.37-1_all.deb 1016K /var/cache/apt/archives/udev_232-21ubuntu3_amd64.deb 1016K /var/cache/apt/archives/libxatracker2_12.0.6-0ubuntu0.16.04.1_amd64.deb 1016K /var/cache/apt/archives/colord-data_1.3.3-2_all.deb 1016K /var/cache/apt/archives/colord-data_1.3.2-1_all.deb 1004K /var/cache/apt/archives/libxatracker2_12.0.6-0ubuntu0.16.10.1_amd64.deb 1004K /var/cache/app-info/gv 1000K /var/cache/app-info/gv/en_US.gvz 996K /var/cache/apt/archives/udev_231-9ubuntu4_amd64.deb 996K /var/cache/apt/archives/netpbm_2%3a10.0-15.3build1_amd64.deb
接下来,我们可以使用以下命令,方法是进入所需的目录,在该目录中我们要检查显示的顶级文件,如下所示。
# cd /var/log/
# du -hsx * | sort -rh | head -10
2.9M dpkg.log.1 2.0M dist-upgrade 1.6M kern.log.1 932K installer 232K syslog.2.gz 228K tomcat8 188K syslog.1 188K auth.log.1 144K kern.log 136K apt
5)Ncdu命令检查磁盘使用情况
Ncdu是具有Ncurses接口的磁盘使用情况分析器。
在跟踪消耗空间的文件和目录时,它非常有用且易于使用。
我们可以使用以下命令在Ubuntu或者RHEL系统上简单地安装它。
# apt install ncdu
# yum install ncdu
安装后,我们可以开始使用此命令来检查系统的磁盘使用情况。
# ncdu
运行此命令后,它将开始更新磁盘并在终端上显示结果。
使用以下命令检查系统根分区的磁盘使用情况。
# ncdu /
最大的文件夹将显示在顶部,以方便我们进行故障排除。
我们可以使用其help命令来了解有关其用法的更多信息,从而从中获得更多好处。
6)Shell脚本查找消耗磁盘最多的目录
在此shell脚本中,我们将看到哪些顶级目录正在占用较大的磁盘空间,以便在紧急情况下可以释放一些空间。
我们在此脚本中使用的命令是带有不同键“ sort”和“ head”的“ du”。
让我们使用命令行编辑器(如“ vi”)创建一个新文件,并将以下内容放入其中,如下所示。
# vim topdir.sh
#/bin/bash #check if user input argument if [ $# -eq 0 ]; then #if no argument print next messge and exit from script echo "Usage:# chmod +x topdir.sh" exit 1 fi # Save first arguments to variables CheckedDir="" # HeadValue= #set value for variable count value 1 count=1 #just print empty line echo "" #Print next message: echo "Here is the ${HeadValue} biggest directories located in ${CheckedDir}:" echo "" #Getting list of directories and space they use. du -a --max-depth=1 --one-file-system ${CheckedDir}/| #next we sort result sort -rn | sed "1d" | # next we get only first X directories head -"${HeadValue}" | #next print result to user while read size dirrr ; do #counting size in Mb size="$(( size/1024 ))" #show output for user echo "N°${count} : ${dirrr} is ${size} Mb" ((count++)) done echo ""
保存并关闭配置文件,授予文件可执行权限,然后运行脚本以在我们定义的位置下找到顶部目录,如图所示。
# ./topdir.sh /var/log/##代码##