Resumo de uso de disco por usuário

6

Existe uma maneira de obter o uso do disco por usuário em um determinado caminho? du parece não ter uma opção para agregar o uso de disco por usuário, e df parece apenas informar quanto disco resta na unidade.

Isso pode ser feito com um comando ou em algumas linhas no shell? Quaisquer ponteiros seriam muito apreciados. Caso isso ajude, eu uso zsh .

Observação: as cotas não estão ativadas em nosso sistema de arquivos.

    
por Amelio Vazquez-Reina 29.05.2013 / 16:06

2 respostas

9

Os seguintes itens funcionarão com GNU find e awk :

find /path -type f -printf '%u %k\n' | awk '{ 
                                            arr[$1] += $2 
                                        } END { 
                                            for ( i in arr ) { 
                                                print i": "arr[i]"K" 
                                            }
                                        }'
    
por 29.05.2013 / 16:20
2

Você pode aproveitar o stat incorporado do zsh.

zmodload zsh/stat
local -a stat
local -A usage
local x
for x in **/*(.); do
  stat -A stat -- $x
  ((usage[$stat[5]] += stat[8]))
done
for x in ${(k)usage}; do
  echo $usage[$x] ${${"$(getent passwd $x)"%%:*}:-$x}
done | sort -k1n

( getent para recuperar o nome de usuário do ID do usuário é específico do Linux, eu não acho que exista nada para isso no zsh.)

    
por 30.05.2013 / 00:27