Artigo para uso do dia-a-dia, sobre como identificar os maiores arquivos ou diretórios em ambiente Linux/Unix. No momento do desespero, com o ambiente parado com 100% de FS utilizado, pode ajudar.
Files
Exemplo onde entro em um diretório de meu interesse, que será alvo do comando “find .” Após isso, é exibido os 5 maiores arquivos (já ordenados em forma decrescente):
root@solariSWIV:/var# pwd
/var
root@solariSWIV:/var# find . -ls | sort -nrk7 | head -5
151175 36125 -rw-r--r-- 1 root sys 36852732 Aug 20 2018 ./pkg/cache/actions.stripped
148506 22292 -r--r--r-- 1 root bin 22794033 Aug 20 2018 ./db/stackdb/stackdb
13472 19345 -rw-r--r-- 1 root root 19692362 Aug 20 2018 ./pkg/state/known/catalog.summary.C
13462 18321 -rw-r--r-- 1 root root 18657670 Jul 13 2018 ./pkg/publisher/solaris/origins/9b4531c13be9b35055178bc2fbd4b35375eacf45/catalog.summary.C
13474 15116 -rw-r--r-- 1 root root 15412040 Aug 20 2018 ./pkg/state/known/catalog.dependency.C
root@solariSWIV:/var#
Caso queiramos filtrar pela extensão do arquivo:
root@solariSWIV:/var# find . -name "*.stripped" -ls | sort -nrk7 | head
151175 36125 -rw-r--r-- 1 root sys 36852732 Aug 20 2018 ./pkg/cache/actions.stripped
root@solariSWIV:/var#
Directories
O comando abaixo retorna os 5 diretórios que estão consumindo mais espaço a partir do diretório que é disparado:
[oracle@oel8 oracle]$ du -S . | sort -nr | head -5
du: cannot read directory './18.0.0/base/tfa': Permission denied
2926364 ./SINAPSE/dados/SINAPSE/datafile
2524048 ./dados/RMANDB/datafile
2382420 ./18.0.0/product/lib
1834208 ./archives
1248092 ./SINAPSE/archives
Caso não queiramos as mensagens de erro (por exemplo de permissão negada), podemos executar:
[oracle@oel8 oracle]$ du -S . 2>/dev/null | sort -nr | head -5
2926364 ./SINAPSE/dados/SINAPSE/datafile
2524048 ./dados/RMANDB/datafile
2382420 ./18.0.0/product/lib
1834208 ./archives
1248092 ./SINAPSE/archives
[oracle@oel8 oracle]$
Nota 1: A opção “-S” não inclui o tamanho dos subdiretórios. Caso este seja o objetivo, é só omitir.
Nota 2: A opção “-S” não foi reconhecida em meu teste em Oracle Solaris 11:
root@solariSWIV:/var# du -S . | sort -nr | head -5
du: illegal option -- S
usage: du [-dorx] [-a|-s] [-h|-k|-m] [-H|-L] [file...]
root@solariSWIV:/var# du . | sort -nr | head -5
799625 .
710205 ./pkg
310250 ./pkg/cache
275912 ./pkg/publisher
275909 ./pkg/publisher/solaris
root@solariSWIV:/var#
Para termos o mesmo efeito, basta substituis o “-S” por “-o”:
root@solariSWIV:/var# du -o . | sort -nr | head -5
94799 ./pkg/cache
76102 ./pkg/state/known
69955 ./pkg/publisher/solaris/origins/9b4531c13be9b35055178bc2fbd4b35375eacf45
44586 ./db/stackdb
21524 ./cache/fontconfig
root@solariSWIV:/var#