Como alguém descobre quais arquivos estão ocupando 80% do espaço em um servidor da Web Linux?

14

O drive está constantemente se enchendo. Você tem caçado todos os arquivos de reposição e aleatórios que você pode. grep'd para arquivos coredump e até removeu alguns dos backups desnecessários ...

Qual seria o seu próximo passo?

O servidor real em questão tem 10 GB de arquivos de sites e o sistema operacional não deve levar mais de 10 GB. Então, como você rastreia o que está preenchendo uma unidade de 50 GB (virtual)?

    
por Gareth 21.07.2009 / 02:54

10 respostas

9

Acho que o ncdu ( link ) é bastante útil para isso.

    
por 21.07.2009 / 16:49
23

Certamente existem maneiras mais elaboradas, mas a que eu lembro é

du --max-depth=1 -h /

Agora pegue o diretório que usa mais espaço (du --max-depth=1 -h /yourdir) e vá mais fundo até encontrar seu culpado.
Se quiser que sua saída seja classificada por tamanho e não se importe com o formato legível por humanos, você também pode fazer du --max-depth=1 /your_dir | sort -n

    
por 21.07.2009 / 03:03
4

Eu uso o baobab do programa Gnome. Você pode executar isso na sua área de trabalho e pode se conectar via SSH ao servidor. Ele mostra um mapa gráfico de fácil leitura do uso do espaço em disco. É instalado sob o Gnome como "Disk Usage Analyzer"

    
por 21.07.2009 / 05:40
3

Dê uma gt5 uma tentativa.

    
por 21.07.2009 / 04:47
2

df -k mostra quais fs são o problema. Em seguida, vá para o diretório de nível superior e execute du-xk | sort -n | cauda -25 isso mostrará o top 25 dir, classificado, para o sun 9 ou anterior, substitua o x por um d.

    
por 21.07.2009 / 03:19
1

Observe que os arquivos podem ser excluídos enquanto ainda estão sendo gravados, portanto, eles usam o espaço em disco enquanto o processo de criação está em execução, mas não possuem um nome de arquivo.

Isso torna isso inacessível com as ferramentas usuais - você pode usar o lsof para investigar quais processos têm arquivos abertos.

    
por 21.07.2009 / 09:52
0

Se você pode executar o software no sistema, o xdiskusage mostrará graficamente quais diretórios / arquivos estão ocupando seu espaço. Extremamente útil.

Eu acredito que o KDE contém algo semelhante.

Se for somente texto e você não puder instalar software extra, o uso criativo de du provavelmente o levará até lá também.

    
por 21.07.2009 / 03:03
0
  1. cd para o diretório inicial dos servidores da web (o diretório inicial do apache)
  2. execute o comando "du -a | head -30 | sort -nr"
  3. ele fornecerá a você os 30 maiores arquivos / diretórios que consomem disco
  4. você pode encontrá-los e excluir (se não for útil)
por 22.02.2016 / 07:00
0

Você pode usar os seguintes comandos para encontrar quais arquivos ou pastas ocupam muito espaço.

Por exemplo para exibir os 20 maiores diretórios da pasta atual, use o seguinte one-liner:

du -ah . | sort -rh | head -20

ou:

du -a . | sort -rn | head -20

Para os 20 maiores arquivos no diretório atual (recursivamente):

ls -1Rs | sed -e "s/^ *//" | grep "^[0-9]" | sort -nr | head -n20

ou com tamanhos legíveis por humanos:

ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20

The second command to work on OSX/BSD properly (as sort doesn't have -h), you need to install sort from coreutils. Then add the bin folder to your PATH.

Você pode definir esses comandos como aliases (por exemplo, adicionar a seus arquivos rc , como .bash_profile ):

alias big='du -ah . | sort -rh | head -20'
alias big-files='ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20'

Em seguida, execute big ou big-files dentro das pastas que você acredita ter ocorrido (por exemplo, em /home ).

    
por 23.12.2016 / 17:54
0

aqui está algo que eu montei para encontrar alguns processos desonestos em nossos servidores de banco de dados: rabbitfinder

#!/bin/sh
tree -s -f > /tmp/out1 && sleep 5 && tree -s -f > /tmp/out2; diff /tmp/out1 /tmp/out2 | egrep "\|--" | awk -F[ '{print $2}' | awk -F] '{print $2 }' | sort | uniq | xargs fuser -f | xargs ps -lFp

é um pouco kludgey e não muito robusto, mas funciona assim:

  1. gera uma lista de árvore recursiva do diretório atual
  2. aguarde 5 segundos
  3. gera outra lista
  4. compare as duas saídas
  5. fuser os arquivos que foram alterados tamanho e
  6. ps -lFp mostrará os arquivos que processo os possui

    user@poseidon:~$ tree -s -f > /tmp/out1 && sleep 5 && tree -s -f > /tmp/out2; diff /tmp/out1 /tmp/out2 | egrep "\|--" | awk -F[ '{print $2}' | awk -F] '{print $2 }' | sort | uniq | xargs fuser -f | xargs ps -lFp
    ./tmp/output:       
    F S UID        PID  PPID  C PRI  NI ADDR SZ WCHAN    RSS PSR STIME TTY          TIME CMD
    0 R 1000     14310 14275 23  80   0 -  1072 -        748   1 22:19 pts/2    00:00:06 dd if /dev/zero of ./output bs 1024 count 10000000
    
por 21.07.2009 / 05:23