Qual diretório está ocupando mais espaço

4

Jenkins parou de construir e eu posso ver pelo df: que / var está no máximo. Depois disso eu posso ver que o culpado é / var / lib / jenkins

52K     alternatives
...
4.0K    games
2.3G    jenkins   <--this one
4.0K    logrotate.status
...
12M     yum
2.4G    total

No entanto, quando eu digito o diretório jenkins para ver qual pasta está consumindo a maior parte deste 2.3GB, existem alguns resultados estranhos:

$ sudo du -csh *
16K     config.xml
0       Connection Activity monitoring to slaves.log
0       Download metadata.log
0       Fingerprint cleanup.log
7.3M    fingerprints
4.0K    hudson.maven.MavenModuleSet.xml
4.0K    hudson.model.UpdateCenter.xml
4.0K    hudson.scm.CVSSCM.xml
4.0K    hudson.scm.SubversionSCM.xml
4.0K    hudson.tasks.Ant.xml
4.0K    hudson.tasks.Mailer.xml
4.0K    hudson.tasks.Maven.xml
4.0K    hudson.tasks.Shell.xml
4.0K    hudson.triggers.SCMTrigger.xml
4.0K    identity.key.enc
4.0K    jenkins.diagnostics.ooom.OutOfOrderBuildMonitor
4.0K    jenkins.model.ArtifactManagerConfiguration.xml
4.0K    jenkins.model.DownloadSettings.xml
4.0K    jenkins.model.JenkinsLocationConfiguration.xml
4.0K    jenkins.mvn.GlobalMavenConfig.xml
4.0K    jenkins.security.QueueItemAuthenticatorConfiguration.xml
160M    jobs
4.0K    nodeMonitors.xml
12K     Out of order build detection.log
41M     plugins
4.0K    proxy.xml
4.0K    queue.xml.bak
4.0K    secret.key
0       secret.key.not-so-secret
32K     secrets
1.1M    updates
8.0K    userContent
12K     users
4.0K    Workspace clean-up.log
209M    total

De 2,3 GB a 209M. Alguém pode explicar isso para que eu possa criar algum espaço? Eu deletei os espaços de trabalho do Jenkins do frontend da web, mas ainda vejo esse resultado.

    
por TenLeftFingers 05.11.2014 / 13:00

4 respostas

8

Com este comando,

sudo du -csh *

você está perdendo diretórios ocultos, por exemplo, * se expande para todos os nomes que começam com qualquer coisa, menos um ponto ( . ). Isso significa que todos os nomes de diretório que começam com um ponto não são passados para o comando du e seu tamanho não é levado em conta.

Na maioria das situações, adicionar .??* aos parâmetros atenderia às necessidades:

sudo du -csh .??* *

O .??* extra está expandindo para todos os nomes que começam com um ponto e possuem mais de dois caracteres. O objetivo é excluir .. , ou seja, o diretório pai dos argumentos.

Arquivos hipotéticos e diretórios como .a ainda seriam perdidos, e aqueles que começassem com um traço ( - ) seriam, na melhor das hipóteses, ignorados e, na pior das hipóteses, acionariam um erro.

Se você tiver nomes de arquivos ou diretórios começando com um traço ou nomes começando com um ponto seguido por um único caractere, essa versão aprimorada informará corretamente todos os tamanhos de diretório:

sudo du -csh -- .[^.] .??* *

Aqui, o -- está dizendo du para receber argumentos começando com um traço como nomes, não opções e .[^.] adicionando aos nomes processados todos os arquivos e diretórios começando com um ponto seguido por qualquer caractere único, mas um ponto. Isso abrange todos os nomes possíveis de arquivos e diretórios.

Vários shells fornecem soluções personalizadas para esses problemas de nomenclatura:

bash :

shopt -s dotglob
sudo du -csh -- *

zsh :

sudo du -csh -- *(D)

ksh93 :

FIGNORE='@(.|..)'
sudo du -csh -- *
    
por 05.11.2014 / 13:05
2

Não necessariamente a resposta que você está procurando, mas algo de bom saber é:

sudo du -max /var/lib/jenkins | sort -n

Esse é provavelmente um dos comandos que eu mais uso para esse tipo de coisa. O "-a" inclui o tamanho total do diretório (assim, você verá um diretório cheio de arquivos pequenos como um grande diretório na saída final, além de ver todos os arquivos), e o -x o mantém em um sistema de arquivos. Usar -m em vez de -h dificulta a leitura, mas o uso de uma unidade fixa facilita uma classificação numérica mais portátil (como em, ainda funciona quando você não tem um comando de classificação bem novo que suporte o modificador -h).

    
por 05.11.2014 / 16:30
1

Experimente o ncdu . Este é um navegador de diretório baseado em mc baseado em ncurses que permitirá que você veja quais diretórios estão mais ocupados e, opcionalmente, excluirá aqueles em que você não está interessado, como visto nesta captura de tela:

    
por 05.11.2014 / 20:57
0

Existem também ferramentas gráficas para ajudar a descobrir o que está ocupando muito espaço em um diretório.

Eu gosto de Filelight que faz parte do KDE. Aqui está explorando / var / cache no meu computador. O verde e o amarelo estão relacionados a apt , o vermelho é java , e o magenta é pbuilder .

O interior circunda os subdiretórios imediatos e eles são divididos em pedaços menores nos círculos externos. Essa ferramenta torna muito fácil navegar e ver o que está ocupando muito espaço - não apenas arquivos grandes, mas também grandes coleções de arquivos pequenos.

    
por 05.11.2014 / 19:35