linux的du指令

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux的du指令相关的知识,希望对你有一定的参考价值。

du -sb /123
du -sm/123
为什么使用du这个指令的时候,对于同一个文件夹,计算方式不同,得出的该文档的占用容量不同呢?

这个主要的区别是在-b和-m上:

(1)-b通过“man -du”可以查看可以理解为:--apparent-size --block-size=1

(2)-m通过“man -du”可以查看可以理解为: --block-size=1M

其中1M =1024X1024byte,所以可以理解为只是单位不一样了

通过上面可以知道-b和-m除了单位换算不一样,就只有这个命令--apparent-size不同了,但是--apparent-size又是什么呢?

(1)加了--apparent-size的情况

--apparent-size就是你的文件的大小,比如你的文件大小是12345byte,那通过--apparent-size统计的文件大小就是12345byte。

(2)不加--apparent-size

表示的你的文件在系统里面占用的空间,比如你的文件大小是12345byte,在系统里面是通过一块一块区域来存储的,每块区域可以称呼为block,block大小假如为4096byte(其他的几个大小有512byte,1024byte,2048byte,当你在格式化移动硬盘的时候也让你选择了这几个值中的一个吧),这样文件12345byte在存储的时候,需要的block个数=12345/4096+1=4,这样没有j加入命令--apparent-size用的空间就是:4X4096byte>12345byte,即使其中的一个block数据没有存储满,这样其他的文件也不能使用这一块了,这个就是block的概念

所以-sb计算的肯定小些,-sm计算的大些,-sk和sm是一样的,就是单位不一样,所以看下图

-sk与-sm统计出来的大小应该是一样的

参考技术A b是字节数,m是block数,比如一个文件内容是"aa"存放字节的空间是3,而block是1.
还有du 是估量存放该文件和目录的空间,不是实际的字节数。本回答被提问者采纳
参考技术B 你man du 就知道了

-b "--apparent-size --block-size=1"
-m ”--block-size=1M

linux命令:du、sort、more、cat、less

参考技术A 一个比较经典的问题:
如果线上机器的磁盘占用率超级高,怎么办?
这时候优先想到的肯定是,定位到占用磁盘空间最大的那些文件,然后把可以删的给删掉。
那么,问题来了,如何定位到占用磁盘空间最大的文件?
一个办法是执行如下命令:

里面涉及三个指令:du、sort、more
既然用到了,就顺便多了解一下这三个指令的用法,算是做下个人笔记。

首先是du
作用:用来查看文件所占用的磁盘情况。
格式:du [选项] [文件]
可用选项(如下为du --help展示的内容):

操作示例:
对几个比较常用的选项单独拿出来,在机器上实际操作,效果如下:
首先,当前目录如下:

du:

其实吧,从图里面可以看到,使用“du”的时候,最后一行就当前目录的磁盘使用总量,所以,感觉一般情况下-c这个选项并没有什么用。
du -s:只计算总量
不过,注意:-s与-a不能同时存在,会报错的。

sort
作用:对输出的结果进行排序
可用选项:
-r:代表逆序排序
-n:按照字符串数值排序
-g:按照常规数值排序
-f:忽略字母大小写
实测效果:
首先是测试文件的原始状态:

测试一:sort
可以发现:
空行排在了第一位;
不管数字有多大,字符串都会排在数字的后面;
数字之间排序的时候,优先考虑首位数字(感觉是把数字也当成了一个字符串进行排序);

more
作用:用于一页一页地展示文件内容。
几个常用操作:
空格:翻到下一页
b:翻到上一页
/:启动字符串搜索(类似于vim)

此外:
more +n XXX:从XXX文件的第n行开始展示
more -n XXX:展示XXX文件,并且将n行视为一页,也就是按空格时,只会显示后续的N行

cat
作用:一次性的展示所有文件内容
cat有两个比较有用的选项:
-n:输出所有行号
-b:只对非空行输出行号

此外,
cat支持同时输出多个文件的内容:cat XXX YYYY ZZZZ
并且,cat可以与more结合使用:cat XXX | more 或者 cat XXX YYYY ZZZZ | more 或者 cat -n XXX | more

less:
作用:对文件或者输出内容进行分页展示,并且less可以用于打开多个文件
常用操作:
j:向上滚动一行
k:向下滚动一行(类似于vim)
g:跳到第一行
G:跳到最后一行
b:向上翻一页
空格:翻页
n%:跳转到整个文件的n%处
:e :在使用less打开多个文件时,使用“:e”选择跳转到其他文件去
/:进行字符串搜索
v:启动编辑

常用选项:
-N:在每一行前面都显示行号
-m:显示读取文件的百分比
-M:显示读取文件的百分比、行号和总行数

注意:

其他两个比较简单的指令:
head:显示一个文件的前N行
用法:head -n 行数 文件名

tail:显示一个文件的最后N行
用法:tail -n 行数 文件名
不过,使用tai的时候,因为-f选项可以自动显示新增加的内容,所以经常会使用如下方式:
tail -f 文件名

以上是关于linux的du指令的主要内容,如果未能解决你的问题,请参考以下文章

常用linux指令

linux命令:du、sort、more、cat、less

常用的一些 linux 指令

常用的一些 linux 指令

Linux文件大小 指令&编程

❤️万字总结《Linux系统常用命令》❤️——常用的Linux操作指令详解及案例!(建议收藏)