Esc*_*alo 12 linux hard-drive usage disk-space-utilization
我需要找出网络上每个用户占用了多少磁盘空间。我知道df
和du
命令:我可以列出整个文件系统和 AWK 输出,但我想知道是否有更标准的命令。
我正在寻找的输出是:
usr1 xMb
usr2 yMb
[...]
Total zMb
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
谢谢!
附注。红帽 Linux EE
and*_*dol 11
这是一次性的,还是您希望能够定期提取这些信息?如果是后者,那么一种选择是在您的文件系统上应用配额。这样做,系统会持续跟踪每个用户使用的数据量。这样,信息只是对配额数据库的查询。
这是一个简单快捷的解决方案,我相信可以满足您的要求。
我假设您的所有用户在 /home 目录中都有帐户。您所需要做的就是将目录更改为 /home 目录,然后执行深度为 1 的 du 操作。
cd /home
sudo du -d 1 -h
Run Code Online (Sandbox Code Playgroud)
您的输出将如下所示:
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 .
Run Code Online (Sandbox Code Playgroud)
或者为了找到有问题的用户(也是目录),
du -xk | sort -n | tail -25
Run Code Online (Sandbox Code Playgroud)
对于 Solaris:
du -dk | sort -n | tail -25
Run Code Online (Sandbox Code Playgroud)
这将为您提供 25 个最大目录的列表。不完全符合您的要求,但我一直在使用它。
我在这里找到了另一个不错的解决方案。导航到感兴趣的目录,然后运行(或者,更改.
为您感兴趣的目录,例如,/home/
):
find . -type f -printf "%u %s\n" \
| awk '{user[$1]+=$2}; END{for(i in user) print i,user[i]}'
Run Code Online (Sandbox Code Playgroud)