“ du -s。”和“ du -hs。”给出不同的结果(在OS X上)


12

有和没有的区别-h应该只是人类可读的单位,对不对?

好吧显然没有...

$ du -s .
74216696    .
$ du -hs .
 35G    .

还是我弄错了,结果du -s .不是KB?


3
尝试使用du --block-size=1024 -s .。也许您BLOCK_SIZE的设置是512
Echoes_86'1

6
在(OSX)手册页上:“如果未设置BLOCKSIZE,并且未指定-k选项,则块计数将以512字节块显示”
user4556274

如果文件系统实际上是在4096字节的块中,这不是超级有用。
DopeGhoti

因此,没有办法以字节为单位吗?我以为-h只是除以1024并增加了一些单位
吱吱叫声

2
echo "74216696*512" | bc输出为37998948352。是的,-h通过一分为二地转换为人类可读的格式。我得到的是35.3887,与du报告非常接近。至于以字节为单位的大小,只需使用即可--block-size=1。在Linux上,-b可以使用该选项,但是我对OS X不熟悉du
Sergiy Kolodyazhnyy

Answers:


23

du没有输出格式说明给出磁盘使用率的512个字节,而不是千字节。您可以使用该选项-k以千字节为单位显示。在OS X(或macOS,或MacOS或Macos;无论您喜欢哪个)上,都可以通过设置环境变量来自定义默认单位BLOCKSIZE(这也会影响其他命令)。


1
不知道吗……拥有块数有什么兴趣?我从未见过有人在谈论磁盘大小时使用 ...
吱吱叫声,

2
块是文件系统的原子单位。任何文件都会占用磁盘上的全部块。一个块只能部分填充实际数据,但整个块都分配给该文件。大多数人的日常使用只关心百分比而不是无意义,而不关心块。但是fdisk,除非另有说明,否则低级实用程序(例如,dfdu)将以块的形式工作,因为这是它们在内部进行计数的单位。
DopeGhoti

1
@Creak实际上,答案的那一部分是错误的。单位不是文件系统的块大小。出于经典Unix命令(例如)的目的du,“块”表示512字节。请参阅文件块的大小-统计和LS之间的差异块大小和簇大小的区别
吉尔“SO-停止作恶”

3
“任何文件都会占用磁盘上的全部块。” 好吧,通常是的-除非您的文件系统使用尾包。但是,是的,块是文件系统的基本单位(尽管实际的块大小不一定与du。使用的块大小对齐:) :)
通配符

3

问题是du返回的大小为512字节的块数。

为了使大小以KB为单位,可以使用-k使用1024字节块的选项来代替:

$ du -ks .                            
43351596    .
$ du -khs .
 41G    .
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.