【发布时间】:2014-07-11 13:21:06
【问题描述】:
我对 Unix df 命令如何得出用于文件系统的百分比感到困惑。这是我编写的一个小脚本,用于运行 df 并独立找出相同的信息:
$ cat /etc/redhat-release
Red Hat Enterprise Linux Server release 6.0 (Santiago)
$ cat dftest.py
#! /usr/bin/python
import sys
import os
import subprocess
def reportUsage(label, total, free):
used = total - free
print "%s=%dK, used=%dK (%d%%)" % (label, free, used, used*100/total)
p = subprocess.Popen(["df", "-k", "."], stdout=subprocess.PIPE)
print p.stdout.read()
rc = p.wait()
stat = os.statvfs(".")
total = (stat.f_bsize * stat.f_blocks) / 1024
free = (stat.f_bsize * stat.f_bfree) / 1024
avail = (stat.f_bsize * stat.f_bavail) / 1024
print "Total=%dK" % total
reportUsage("Free", total, free)
reportUsage("Avail", total, avail)
$ ./dftest.py
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda4 20158332 3930688 15203644 21% /home
Total=20158332K
Free=16227644K, used=3930688K (19%)
Avail=15203644K, used=4954688K (24%)
$
所以总字节数、可用空间(未授权)匹配和已用空间(基于可用空间)都匹配。精彩的!那么df 怎么会报告 21% 的使用率?我认为它应该报告 19%,因为这就是使用了多少。我错过了什么?这不仅仅是一个舍入错误,是吗??
【问题讨论】:
-
谷歌快速搜索
http://larsmichelsen.com/open-source/answer-why-does-df-k-show-wrong-percentage-usage/ -
@Jidder 您的链接无效。
-
@Lu.nemec 似乎在
percentage之后添加了两个字符,不知道为什么,我认为它在我第一次发布时有效。无论如何,只需从 url 中删除它们,它就会转到正确的位置。
标签: python bash unix filesystems