共计 4070 个字符,预计需要花费 11 分钟才能阅读完成。
概要
主要用到了以下几个命令:du disk usage查看磁盘使用情况、find 查找文件、sort 排序命令
、head 显示top N的命令。
查看占用情况
查看自己的home磁盘使用率:
pichu@Archer ~ $ df -h
文件系统 容量 已用 可用 已用% 挂载点
udev 7.8G 0 7.8G 0% /dev
tmpfs 1.6G 9.4M 1.6G 1% /run
/dev/sda7 28G 15G 12G 56% /
tmpfs 7.8G 360M 7.4G 5% /dev/shm
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 7.8G 0 7.8G 0% /sys/fs/cgroup
/dev/sda1 496M 60M 437M 12% /boot/efi
/dev/sdb3 99G 66G 29G 70% /home
tmpfs 1.6G 12K 1.6G 1% /run/user/1000
可看到100G的/home分区已经用了70%了,还剩29G。
-h:human-readable,以人类可读的方式显示,即显示为K、M、G等单位。一般-h都是显示help,但是和大小相关的一般都是以人类可读的方式输出大小。
home下也就我一个人在用,所以65个G全是我占用的。
pichu@Archer ~ $ du -hd 1 /home
65G /home/pichu
65G /home
-h:human-readable,同上。
-d, –max-depth=N:目录的层数。
所以这里的意思是,只查看/home下一层目录深度,并以人类可读的方式输出大小。
下面才是关键:找出那些最占空间的文件。
最大文件夹top10
最大的文件夹top10:
pichu@Archer ~ $ du -h ~ | sort -hr | head -10
65G /home/pichu
34G /home/pichu/VirtualBox VMs/Win7
34G /home/pichu/VirtualBox VMs
8.3G /home/pichu/.IntelliJIdea2017.3
8.2G /home/pichu/.IntelliJIdea2017.3/system
4.9G /home/pichu/.IntelliJIdea2017.3/system/index
3.8G /home/pichu/Codes/Java
3.8G /home/pichu/Codes
3.7G /home/pichu/.m2/repository
3.7G /home/pichu/.m2
sort:
-r, –reverse:逆序排列。本来对数字排序应该是1在前,2在后,现在反过来了。
-h, –human-numeric-sort:既然显示文件大小的命令,-h代表人类可读的方式输出文件大小,那么sort命令自然是以人类可读的数字去排序。
head:
-n, –lines=[-]NUM:输出多少行。-n 10等价于-10。
所以命令的意思就是显示home下所有文件的大小,并逆序排列,最后显示top10。
如果sort不加-h:
pichu@Archer ~ $ du -h ~ | sort -r | head -10
9.9M /home/pichu/.m2/repository/org/apache/hadoop/hadoop-yarn-server-resourcemanager/2.7.1
9.9M /home/pichu/.m2/repository/org/apache/hadoop/hadoop-yarn-server-resourcemanager
9.9M /home/pichu/.ivy2/cache/toolbox/text-tools/zips
9.9M /home/pichu/.ivy2/cache/external/findbugs/zips
99M /home/pichu/.atom/packages/markdown-pdf/node_modules
99M /home/pichu/.atom/packages/markdown-pdf
996K /home/pichu/.m2/repository/org/apache/commons/commons-math/2.2
可看到排名前几的竟然才9.9M,而65G的/home/pichu竟然榜上无名。这是因为没了-h,sort单纯按照数字大小排序。所以du和sort需要同时用-h(或者同时不用)。
结论
根据输出结果,可看到最大的文件夹是65G的/home/pichu,其次是放置了windows7虚拟机的文件夹。紧接着,编程IDE intellij idea占用空间较大,看目录得知是idea构建的索引的大小。所以说,之所以用idea编程这么方便,是因为它背后默默地做了相当多的工作。
然后我的代码目录占了3.8G。想想应该主要是有很多工程用的ant+ivy,这些工具必须将依赖resolve到代码工程里,这些依赖应该是占这么大空间的主要原因。(如果单靠代码占了3.8G,那是有点儿够疯狂了)
最后,占top10的是本地maven仓库3.7G。这点比较符合情理。
但是,结果并非尽如人意。首先,第一条信息是无效的,因为家目录包含了其他所有的目录,它肯定是最大的。而且/home/pichu/.IntelliJIdea2017.3之所以能排到第四,纯粹因为其子目录system有8.2G,跟它本身大小并没有什么关系。同理,/home/pichu/Codes之所以能排进前十,也全靠它的子目录/home/pichu/Codes/Java的大小。所以这种排序方式还是产生了一些无意义的排名。
因此,按照文件夹大小排序有一定的效果,但还需结合其他方式。
最大独立文件夹top10
如果能够看到某文件夹自己本身的大小,而不包含其子文件夹的大小,就不会出现上述不足之处了。
最大文件夹top10(不包含子文件夹的大小):
pichu@Archer ~ $ du -Sh ~ | sort -hr | head -10
34G /home/pichu/VirtualBox VMs/Win7
2.7G /home/pichu/.IntelliJIdea2017.3/system/index/trigram.index
2.6G /home/pichu/.IntelliJIdea2017.3/system/Maven/Indices/Index5/data0/context
2.0G /home/pichu/Public/windows
1.1G /home/pichu/.local/share/Trash/files
1.0G /home/pichu/.cache/netease-cloud-music/CachedSongs
865M /home/pichu/Pictures
579M /home/pichu/.IntelliJIdea2017.3/system/caches
579M /home/pichu/Downloads
572M /home/pichu/Codes/Java/uni-server/lib
-S, –separate-dirs:仅显示该目录除掉子目录之后的大小。
结论
这么排序的结论就比较有说服力了。排第一的是windows7所在的文件夹。其后是idea的一些配置文件夹的大小。然后是1.1G的trash文件(这个就是可以删除的)。接着是网易云音乐的cache文件、idea的cache、下载的一些内容、某工程代码的lib目录(就是之前说的ant+ivy必须把代码的依赖resolve本到工程下,所以才导致Code目录有3.8G)。
因此我们可以删掉trash文件,删除cache等,清理出一部分磁盘空间。
当然这么排序也有一些不足的地方,比如只能看到idea的配置文件夹下的 system/index/trigram.index 和 system/Maven/Indices/Index5/data0/context 比较占空间,但是整个.IntelliJIdea2017.3究竟占多大空间就不清楚了,这个信息可以在上文的排序方式中看到。因此这两种排序方式都有其存在的价值。
最大文件top10
除了看文件夹的大小,我们当然也很想找出最占空间的那些单文件。
最大文件top10:
pichu@Archer ~ $ find ~ -type f -exec du -h {} + | sort -rh | head -10
34G /home/pichu/VirtualBox VMs/Win7/Win7_2rd.vdi
2.7G /home/pichu/.IntelliJIdea2017.3/system/index/trigram.index/Trigram.Index.storage.values
2.6G /home/pichu/.IntelliJIdea2017.3/system/Maven/Indices/Index5/data0/context/_77.cfs
1.1G /home/pichu/Public/windows/SW_DVD5_Office_Professional_Plus_2016_64Bit_ChnSimp_MLF_X20-42426.ISO
929M /home/pichu/.local/share/Trash/files/java_error_in_IDEA.hprof
921M /home/pichu/Public/windows/Office_Professional_PlusVL_2010_x64_Activated.iso
338M /home/pichu/.IntelliJIdea2017.3/system/caches/content.dat.storageData
334M /home/pichu/tmp/CLion-2018.1.6.tar.gz
279M /home/pichu/Utils/druid/druid-0.11.0/log/log-coordinator
220M /home/pichu/Utils/druid/druid-0.11.0-bin.tar.gz