各位好,对于服务端测试来说,linux是我们每天都会用到的,而linux的操作又是基于命令的,有些命令我们天天都在用,但是偶尔”–help”一下,都会发现一大堆没用过的参数,从这周起,每周四,我们会为大家解剖一个linux命令和它的“Partner command”,今天从du开始:
du
用来查看linux下文件或目录占用的磁盘空间
参数说明
du * 默认显示目录内所有文件夹和./内文件的大小,以K为单位。
--或--null 将du的结果放在一行显示。
-a或-all 显示目录中所有文件的大小,包括目录没的目录。
-b或-bytes 显示目录或文件大小时,以byte为单位。
-c或--total 除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和。
-D或--dereference-args 显示指定符号连接的源文件大小。
-h或--human-readable 以K,M,G为单位,提高信息的可读性。
-H或--si 与-h参数相同,但是K,M,G是以1000为换算单位。
-k或--kilobytes 以1024 bytes为单位。
-l或--count-links 重复计算硬件连接的文件。
-L或--dereference 显示选项中所指定符号连接的源文件大小。
-m或--megabytes 以1MB为单位。
-s或--summarize 仅显示总计。
-S或--separate-dirs 显示个别目录的大小时,并不含其子目录的大小。
-x或--one-file-xystem 以一开始处理时的文件系统为准,若遇上其它不同的文件系统目录则略过。
-X或--exclude-from= 在指定目录或文件。
--exclude= 略过指定的目录或文件。
--max-depth= 超过指定层数的目录后,予以忽略。
--help 显示帮助。
--version 显示版本信息。
常用参数及场景
1、查看文件大小
2、以K/M/G等可读单位查看文件大小(进制1024)
3、查看目录内文件大小:
4、列出目录下所有节点,一个文件或一个目录算一个节点(例如一个文件夹下有两个文件,就是三个节点)
5、不深入到子目录查看大小:
du -h --max-depth=0 *
6、列出当前目录中不包括in字符串的文件或文件夹的大小:
du -h --exclude='*in*' *
7、按照从大到小排序,列出当前目录的文件:
du -sh * |sort -nr
sort命令的n是以数值排序,默认是从小到大的顺序,-r是倒序的意思
这里用的是centos7.2系统,这里发现按照h模式列出,但是sort函数会忽略单位,所以这里会把8K排列到4M前面,可以用byte或者-H来列出文件大小,以解决这个问题
8、按照文件占用的存储块从大到小列出当前目录的文件,包括总和:
du -c * |sort -rn
对比一下 –bytes的结果,感觉有些奇怪
为什么实际大小是66字节的文件和实际大小是1954的文件占用的存储块是一样的呢?这个与设置文件系统时规定的最小存储块有关,也就是说即使1字节的文件,也需要占用4块的空间,这是为了减少文件碎片、增加磁盘io效率;
以上是经常用到的命令组合,欢迎大家留言share更多的du党命令,我们分享的命令也会由简入深,希望感兴趣的同学可以跟我们一起玩转linux命令。