Como ver o uso do disco com menos sobrecarga no bash?


8
du -csh /

O cálculo acima levará muito tempo para calcular. Existe uma maneira de ver o resultado menos preciso com menos sobrecarga?

ATUALIZAR

O que eu quero saber é o tamanho total em um diretório específico.

Respostas:


9

Quanto a uma versão mais otimizada du, não conheço uma. As coisas que vêm à mente são:

  1. Armazene esses arquivos em um disco ram ou algo parecido.
  2. Se apenas um aplicativo gravar nesta pasta e em sua subpasta, faça com que o aplicativo acompanhe.
  3. Se todos esses arquivos tiverem o mesmo tamanho e uma quantidade uniforme deles distribuídos entre diretórios, você poderá apenas contar o número de subdiretórios e multiplicá-lo por arquivo por diretório e, em seguida, tamanho por arquivo. Você pode fazer isso rapidamente usando apenas a contagem de links físicos para o diretório se você tiver apenas uma estrutura profunda de um diretório ( stat -c '%h') - 2.
  4. Torne todos esses arquivos pertencentes a um usuário específico e use o mecanismo de cota.
  5. Use uma partição dedicada e apenas use df. Um sistema de arquivos virtual (um arquivo em um sistema de arquivos montado via loopback) também pode fazer isso.

De tudo isso, as opções de cota e partição dedicada são provavelmente as mais fáceis e eficientes.


6

O problema é que 'du' precisa enumerar todos os objetos na subárvore. Esta é uma operação intensiva de metadados e leva um tempo para a maioria dos sistemas de arquivos Linux. Alguns sistemas de arquivos, NTFS e NSS da Novell, têm a capacidade de acompanhar tamanhos de diretório como esses nos metadados, o que torna essa operação muito mais rápida. Geralmente, se o seu sistema de arquivos suportar cotas de diretório de algum tipo, ele precisará acompanhar esses dados internamente para imposição, toda mudança de tamanho será replicada na árvore de diretórios para o NTFS (NTFS) ou para todos os diretórios (NSS). ) quando isso acontece, portanto, obter um tamanho de árvore de diretórios é muito rápido.

Infelizmente, não há como fazê-lo funcionar mais rápido, apenas soluções alternativas.

  • Execute 'du' no modo em lote e viva com resultados não ao vivo
  • Crie um novo sistema de arquivos e use 'df'
  • Crie um arquivo grande que mantenha seu diretório, monte-o em loopback, formate-o e use 'df' nesse novo ponto de montagem. Se precisar de mais espaço, desmonte a montagem de loopback, estenda o arquivo e remonte.

+1 Esta é uma resposta muito útil.
Richard Holloway

4
du -h --max-depth=1

Fornece os tamanhos no formato KB / MB / GB humano a partir do seu diretório de trabalho atual.


Eu acho que eles querem saber por que demora tanto para gerar e responder. Eu acho que o Windows também age da mesma maneira. Se você clicar com o botão direito do mouse em um diretório, precisará aguardar enquanto ele calcula o tamanho de cada subdiretório. É assim que o sistema de arquivos funciona.
The Janix Unix

Sim, a menos que eles executem um serviço de indexação ou algo assim.
21710 David Beckman

3

Com as ferramentas padrão, você precisa obter o tamanho de cada arquivo no diretório sempre que quiser saber o tamanho total. Uma maneira possivelmente mais eficiente de fazer isso seria ter um "monitor de tamanho de diretório", que monitora o tamanho atual do diretório. Não existe tal coisa (que eu saiba), mas você poderia implementar uma inotify. Possivelmente não com o bash (e inotify-tools), mas você provavelmente poderia usar python e pyinotify, por exemplo.


2

Você pode achar gt5útil. Ele armazena as duinformações mais recentes e difere disso na próxima vez em que é executado. Ele exibe sua saída usando um navegador em modo de texto, como links.


2

Além disso, considere a opção -x em du - "um sistema de arquivos" se você estiver fazendo

du -xh / --max-depth=1 

Você verá apenas o resumo de uso do disco na partição raiz e ele não tentará adicionar / proc, / sys, / dev e assim por diante ...


2

se você deseja apenas o uso do disco para o sistema de arquivos raiz, então

df -h /


1

Não. Você poderia periodicamente executar um canal para um arquivo de texto, em um trabalho agendado para execução durante a noite, para que você não tenha dados atuais disponíveis imediatamente?

Observe que medir o espaço em disco usado por uma pasta que contém um grande número de arquivos no Windows também leva algum tempo.




0

Possivelmente

df -h

texto extra, já que uma resposta curta e concisa não é suficiente para que a falha do servidor pense que sou humano.


Mas eu preciso saber o tamanho total em um diretório específico
apache

então use precisará usar du
The Unix Janitor

Mas no Windows, posso ver o espaço total usado sem sobrecarga, por que não no linux?
Apache

você está falando sério? ntfs não é ext3
The Janix Unix

1
@apache, oh, há sobrecarga, tente ver o tamanho de uma pasta de 20 GB com muitos arquivos de 10 a 20 MB. Há sobrecarga de def.
Zypher 11/04

0

Para encontrar o espaço exatamente nesse diretório, liste-o em vez de /. Para encontrar o espaço em diretórios fooe bar, liste os dois:

du -csh foo bar

0

Você deve usar o dnotify para calcular o uso do disco se o sistema de arquivos não for alterado frequentemente.

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.