我需要找出网络上每个用户占用了多少磁盘空间。我知道df
和du
命令:我可以列出整个文件系统并使用 AWK 输出,但我想知道是否有更标准的命令。
我正在寻找的输出是:
usr1 xMb
usr2 yMb
[...]
Total zMb
有任何想法吗?
谢谢!
附注:Red Hat Linux EE
答案1
这是一次性的事情,还是您希望能够定期提取这些信息?如果是后者,那么一个选择就是在您的文件系统上应用配额。这样做系统会持续跟踪每个用户使用的数据量。这样,信息就只是对配额数据库的查询。
答案2
这是一个简单而快捷的解决方案,我相信它可以满足您的要求。
我假设您的所有用户都在 /home 目录中拥有帐户。您需要做的就是将目录更改为 /home 目录,然后在深度 1 处执行 du。
cd /home
sudo du -d 1 -h
你的输出将会像这样:
kcyow@linux-server:/home$ sudo du -d 1 -h
7.8M ./user932
52G ./user575
20K ./user329
98G ./user323
48G ./user210
148G ./user44
12M ./kcyow
362G ./user28
24G ./user774
6.2M ./user143
730G .
答案3
或者查找问题用户(目录也是如此),
du -xk | sort -n | tail -25
对于 Solaris:
du -dk | sort -n | tail -25
这将为您提供 25 个最大目录的列表。虽然不是您所要求的,但我一直都在使用它。
答案4
我们在很多地方都使用配额系统,但设置了高得离谱的配额。这样您就可以获得快速报告的好处。在一个站点,每个用户都有 1 TB 的“配额”空间。
随着可用磁盘空间的增长,我们会定期提高配额 —— 最初是每位用户 30GB,这在当时是高得离谱的。