Linux / Unix 中每个用户的磁盘使用量

Esc*_*alo 12 linux hard-drive usage disk-space-utilization

我需要找出网络上每个用户占用了多少磁盘空间。我知道dfdu命令:我可以列出整个文件系统和 AWK 输出,但我想知道是否有更标准的命令。

我正在寻找的输出是:

usr1  xMb
usr2  yMb
[...]
Total zMb
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

谢谢!

附注。红帽 Linux EE

and*_*dol 11

这是一次性的,还是您希望能够定期提取这些信息?如果是后者,那么一种选择是在您的文件系统上应用配额。这样做,系统会持续跟踪每个用户使用的数据量。这样,信息只是对配额数据库的查询。

  • 您甚至不需要将配额设置为一个大数字,如果您不设置它(即 0),它不会强制执行它,但它会记录使用情况 (2认同)

Kin*_*Yow 9

这是一个简单快捷的解决方案,我相信可以满足您的要求。

我假设您的所有用户在 /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)


Ron*_*tol 6

或者为了找到有问题的用户(也是目录),

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 个最大目录的列表。不完全符合您的要求,但我一直在使用它。


Jon*_*nas 6

我在这里找到了另一个不错的解决方案。导航到感兴趣的目录,然后运行(或者,更改.为您感兴趣的目录,例如/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)