我需要获取人类可读的 du 输出列表。
但是,du没有“按大小排序”选项,并且管道sort无法与人类可读标志一起使用。
例如,运行:
du | sort -n -r
Run Code Online (Sandbox Code Playgroud)
按大小(降序)输出排序的磁盘使用情况:
du |sort -n -r
65108 .
61508 ./dir3
2056 ./dir4
1032 ./dir1
508 ./dir2
Run Code Online (Sandbox Code Playgroud)
但是,使用人类可读的标志运行它,排序不正确:
du -h | sort -n -r
508K ./dir2
64M .
61M ./dir3
2.1M ./dir4
1.1M ./dir1
Run Code Online (Sandbox Code Playgroud)
有谁知道du -h 按大小排序的方法?
我有一个文件服务器,其中 df 报告 94% 的 / 已满。但是根据 du 的说法,使用的要少得多:
# df -h /
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 270G 240G 17G 94% /
# du -hxs /
124G /
Run Code Online (Sandbox Code Playgroud)
我读到打开但删除的文件可能对此负责,但重新启动并没有解决这个问题。
这是Linux,ext3。
问候
我很难掌握读取文件大小的正确方法是什么,因为每个命令都会给你不同的结果。我还在http://forums.devshed.com/linux-help-33/du-and-ls-generating-inconsistent-file-sizes-42169.html 上看到了一篇文章,其中说明了以下内容;
du 为您提供文件在文件系统上的大小。(IE 将始终为您提供可被 1024 整除的结果)。
ls 会给你文件的实际大小。
您正在查看的是文件的实际大小与其占用的磁盘空间量之间的差异。(也称为文件系统效率)。
它驻留在文件系统上和文件的实际大小有什么区别
我在我的FreeBSD 9.0 x64上使用 zfs并且对它非常满意,但我发现很难计算目录的真实大小,而不是压缩大小。
当然,我可以遍历目录并使用 ls 计算每个文件的大小,但是为此我希望 du 有一些额外的密钥。
那么,我如何知道压缩在 zfs 上的 dir 的目录大小?
提前感谢您的建议,我简单地想不起来没有这样一种“简单”的方法,没有 'find ./ -type d -exec ls -l '{}' \; | 哎呀……'!
我正在尝试释放一些磁盘空间 - 如果我这样做df -h,我有一个名为 /dev/mapper/vg00-var 的文件系统,它表示它的 4G,使用了 3.8G,还剩下 205M。
那对应于我的 /var 目录。
如果我下降到 /var 并执行du -kscxh *,则总数为 2.1G
2.1G + 200M free = 2.3G ... 所以我的问题是,剩下的 1.7G 在哪里?
我du -sh在各种目录中运行以查找磁盘猪。我有两台相同的服务器(Dell PE2850s),都使用 RHEL5,du在一台服务器上运行比在另一台服务器上运行的时间要长得多。
例如,做 du -sh /opt/foobar在服务器 A(其中大约有 25 GB)上将需要 5 分钟,而在服务器 B 上,具有相同数据量的相同命令将几乎立即向我报告。在跑顶等时,我看不到任何明显的东西。
任何意见是极大的赞赏。
我有一个 50GB 的 vps
当我运行 df 我得到
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 49982172 46580100 863064 99% /
none 507212 172 507040 1% /dev
none 511676 4 511672 1% /dev/shm
none 511676 76 511600 1% /var/run
none 511676 0 511676 0% /var/lock
none 511676 0 511676 0% /lib/init/rw
Run Code Online (Sandbox Code Playgroud)
当我从 / 运行 du -h 时
...
20K ./tmp/vmware-root
4.0K ./tmp/.webmin
4.0K ./tmp/.X11-unix
4.0K ./tmp/.ICE-unix
4.0K ./tmp/hsperfdata_root
48K ./tmp
7.7M ./bin
3.8G .
Run Code Online (Sandbox Code Playgroud)
我还尝试找出大于 100MB 的文件,以尝试使用 find / -size +100M …
我想获取特定目录中所有目录的大小。我在想像
find . -type d -exec du -sh {} \;
Run Code Online (Sandbox Code Playgroud)
但这会递归地返回所有目录。如何限制深度?
我正在使用du -bs来计算文件夹大小。
du -bs /folder
Run Code Online (Sandbox Code Playgroud)
结果是以字节为单位的96342835 ...所以以 MB 为单位是 (/1024/1024) 91,87MB。
好的,但是当我使用
du -hs /folder
Run Code Online (Sandbox Code Playgroud)
结果不一样。99MB 或
du -s taxikondrat.cz/
Run Code Online (Sandbox Code Playgroud)
100980 KB = 98,61MB
我尝试了不同的方法。每一次我都得到了不同的结果。例如
find -type f -print0 | xargs -0 stat --print='%s\n' | awk '{total+=$1} END {print total}'
Run Code Online (Sandbox Code Playgroud)
我有 96059200 字节,所以91,60MB
ls -ARgo "$@" | awk '{q += $3} END {print q}'
Run Code Online (Sandbox Code Playgroud)
96338739 字节,所以91,87 MB。舍入后相同,但以字节为单位略有不同。
那么,什么是真的?为什么会有这种差异,什么方法是最准确的计数?
我在 DigitalOcean 上运行的 Ubuntu Web 服务器上的磁盘空间似乎已满。我已经找到并删除了大日志文件并重新启动了 Nginx。不过,看起来还是有问题。
df显示它仍然是满的:
$ df -h /
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 50G 47G 22M 100% /
Run Code Online (Sandbox Code Playgroud)
但du显示它尚未满:
$ du -shx /
3.2G /
Run Code Online (Sandbox Code Playgroud)
我需要做什么来解决这个问题?