Descobrindo o que está usando todo o espaço no * nix


21

Qual sequência de comandos me dirá quais arquivos são os maiores a partir de um diretório específico, incluindo todos os subdiretórios? Quero saber para onde foi todo o espaço.

De preferência apenas com comandos regulares do unix'y.

Se possível, tente mantê-lo compatível com o Sun OS 5.10 (talvez além das respostas regulares do Linux, não como um substituto, para mantê-lo o mais genérico possível).


Há dois votos para SU e dois para SF. Qual é o mais apropriado? Isso poderia pertencer a qualquer um, na minha opinião.
mmyers 24/07/2009

5
@mmyers: deu para SU ... SU precisa de perguntas reais!
Shog9

1
Mas SU já tem uma pergunta muito semelhante! superuser.com/questions/9847/…
Jonik

Respostas:


11

Pessoalmente, gosto de usar du -sh *para ver o tamanho de cada diretório no diretório atual.

Além disso, você pode classificar a ter pastas maiores primeiro: du -shx * | sort -hr. Para du:

  • -s, --summarize: exibe apenas um total para cada argumento
  • -h, --human-readable: tamanhos de impressão em formato legível por humanos (por exemplo, 1K 234M 2G)
  • -x, --one-file-system: ignorar diretórios em diferentes sistemas de arquivos

Para sort:

  • -h, --human-numeric-sort: compare números legíveis por humanos (por exemplo, 2K 1G)

Este é realmente muito útil com um menor mod: du -s * | sort -nr.
Alex Budovski

5
Você pode manter os tamanhos de arquivo em formato legível por humanos com du -sh * | sort -hr.
Jorge Israel Peña

du -shx * | sort -hré bom, mas retorna apenas o diretório atual. Como eu faria esse sistema amplamente? E como eu poderia excluir tudo abaixo de 100mb? Obrigado.
TEM

Isso depende de sua invocação na concha. Então, *é o que torna aplica a tudo no diretório atual, mas você poderia facilmente mudar isso para, por exemplo some/other/path/*, ou se você apenas quer executá-lo em um único diretório como um todo, então omitir o *padrão glob. Quanto a filtrar as coisas, talvez faça uma pergunta separada.
Jorge Israel Peña

Para executá-lo recursivamente em todo o sistema, convém associá-lo finda alguma raiz do diretório e usar seu -execparâmetro para chamar du. O findpróprio programa provavelmente pode filtrar com base no tamanho do arquivo com algo parecido size +100M. Veja esta pergunta . Talvez algo como find / -size +100M -exec du -sh {} \; | sort -hr, embora isso não tenha sido testado.
Jorge Israel Peña

13

ncdu

É ótimo: CLI, baseado ncurses, rápido, simples. Instale-o com sudo apt install ncdu.

insira a descrição da imagem aqui


5

basicamente você pode usar o comando du. algo assim

du -a /home | sort -rn |head -1

consulte a página de manual ou o info du para obter mais opções.

Ou você pode usar o GNU find.

find /home/ -type f -printf "%s:%p\n" | sort -t":" -rn| head -1  

'Find' no Sun OS 5.10 tem uma alternativa que eu posso usar para -printf?
Alex Budovski # 04/08

Além disso, existe alguma maneira de obter o primeiro comando (du ...) para filtrar os diretórios? Eu só estou realmente interessado em arquivos, como no seu segundo comando.
Alex Budovski #

5

Não é linha de comando, mas ainda é unix'y: kdirstat

Eu o uso para descobrir onde todo o espaço foi e eu gosto muito mais do que o Disk Usage Analyzer (também conhecido como Baobab). É um dos poucos aplicativos do KDE que são tolerados no meu ambiente GNOME ;-)

insira a descrição da imagem aqui

De acordo com o kdirstat.sourceforge.net, ele roda no Solaris.

Embora o KDirStat seja um programa do KDE, ele roda bem em todos os desktops X11, ou seja, roda em Linux, BSD e em muitos outros sistemas do tipo Unix (Solaris, HP-UX, AIX, ...).


No ubuntu: k4dirstat e qdirstat. O último mais atualizado. Eu não gosto que eles permitem a pastas de exclusão
develCuy

3
du -a | sort -n

faria o trabalho. Usando o baobab (faz parte dos utilitários do gnome, provavelmente já está instalado no seu sistema), você obtém uma análise gráfica bastante agradável do espaço usado.


Alguma razão para usar -g em vez de -n? "Use esta opção apenas se não houver alternativa; é muito mais lenta que --numeric-sort (-n) e pode perder informações ao converter para ponto flutuante." Gnu.org/software/coreutils/manual/html_node/…
26909

@therefromhere: usei a página de manual, que não é tão detalhada quanto o site que você vinculou. Acabei de escolher a primeira opção que funcionou para o caso em particular. Mas você está certo; Eu editei minha resposta. Obrigado!
balpha

3

Analisador de uso de disco

Se você estiver usando uma distribuição baseada no Debian / Ubuntu, existem algumas GUIs disponíveis nos repositórios, que você pode encontrar usando o synaptic.

insira a descrição da imagem aqui


3
du . -ha | sort -hr
  • -a, --all: escrever contagens para todos os arquivos, não apenas diretórios
  • -h, --human-readable: tamanhos de impressão em formato legível por humanos (por exemplo, 1K 234M 2G)

1
Acho que você pode pronunciar esse comando altamente divertido. Parece engraçado também.
jtbandes

2
-1, isso está errado. O "-h" no comando the du interrompe a classificação.
26909

1
Não está errado, apenas não é portátil. -h é um GNUism. Use -k em vez disso com o Sun OS.
444 Ludwig Weinzierl

+ Ludwig, acho que você não entendeu. Ao adicionar -h, torna os números legíveis por humanos, portanto, eles não são mais números que podem ser usados ​​pelo comando de classificação. por exemplo, as coisas seriam classificadas assim: "760K 784M 788K 860K 944K 985M" Deve ser du -ha | sort -hrou du -ha | gsort -hr(no osx depois de instalar os utilitários principais)
Gerry


2

Comandante da meia-noite

Se você deseja uma saída de lista com boas opções de GUI e navegação, instale o Midnight Commander ( mcna maioria dos gerenciadores de pacotes) e marque "show directory size" no menu de comando. Além disso, você pode Ctrl+ space.

insira a descrição da imagem aqui

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.