Come si fa a sapere quali file occupano l'80% dello spazio su un server web Linux?


15

L'unità si riempie costantemente. Hai dato la caccia a tutti i file di riserva e casuali che puoi. grep'd per i file coredump e persino rimosso alcuni dei backup non necessari ...

Quale sarebbe la tua prossima mossa.

L'attuale server in questione ha 10 GB di file di siti Web e il sistema operativo non dovrebbe richiedere più di 10 GB, quindi come rintracciare ciò che riempie un'unità da 50 GB (virtuale)?


Risposte:



23

Sicuramente ci sono modi più elaborati, ma quello che ricordo è

du --max-depth = 1 -h /

Ora prendi la directory che occupa più spazio (du --max-depth=1 -h /yourdir)e vai più in profondità fino a trovare il colpevole.
Se desideri che l'output sia ordinato per dimensione e non ti interessi del formato leggibile dall'uomo, puoi anche farlodu --max-depth=1 /your_dir | sort -n


Si. Faccio praticamente la stessa cosa "du -S | sort -n -r | less". Mi piacerebbe davvero vedere un programma che sembrava htop e cron come mlocate ma quando eseguito ti ha dato informazioni accurate e contemporanee sui file sul tuo sistema.
Gareth,

1
Invece di iniziare da / su webserver provare a partire da http_root. Se non c'è successo, allora si può scegliere '/'. La directory in esecuzione su "/" richiederà molto tempo.
Saurabh Barjatiya,

4

Uso il baobab del programma Gnome. È possibile eseguirlo sul desktop e connettersi tramite SSH al server. Mostra una mappa grafica di facile lettura dell'utilizzo dello spazio su disco. È installato sotto Gnome come "Disk Usage Analyzer"



2

df -k mostra quali fs sono il problema. Quindi cd al dir di livello superiore per esso ed eseguire du -xk | ordina -n | tail -25 questo mostrerà i primi 25 dir, ordinati, per sun 9 o precedenti, sostituisci la x con una d.


Sì, simile a quello che ho appena menzionato nella risposta di @Marie Fischer. Perché usare -k (dimensione del blocco) invece di -h per umani?
Gareth,

-k viene utilizzato in modo che tutte le dimensioni siano riportate in kb. Questo è utile per l'ordinamento altrimenti l'ordinamento metterebbe 10kb prima di 20mb durante l'ordinamento.
Saurabh Barjatiya,

1

Nota che i file possono essere eliminati mentre sono ancora scritti, quindi usano lo spazio su disco mentre il loro processo di creazione è in esecuzione, ma non hanno un nome file.

Questo lo rende non risolvibile con i soliti strumenti: puoi usare lsof per esaminare quali processi hanno file aperti.


Lo uso /usr/sbin/lsof | grep deletedper ottenere questo.
Kevin M,

0

Se riesci a eseguire software sul sistema, xdiskusage ti mostrerà graficamente quali directory / file stanno occupando il tuo spazio. Estremamente utile.

Credo che KDE contenga qualcosa di simile.

Se è di solo testo e non è possibile installare software aggiuntivo, duprobabilmente anche l' uso creativo di ti porterà lì.


0
  1. cd nella home directory dei server Web (home directory di apache)
  2. esegui il comando "du -a | head -30 | sort -nr"
  3. ti darà 30 più grandi file / directory che consumano il disco
  4. li puoi trovare ed eliminare (se non utile)

Questo non funzionerà se non cambi l'ordine di heade sort. Inoltre, è necessario utilizzare le funzionalità di formattazione.
Kasperd,

0

È possibile utilizzare i seguenti comandi per trovare quali file o cartelle occupano troppo spazio.

Ad esempio, per visualizzare le 20 principali directory più grandi nella cartella corrente, utilizzare la seguente riga singola:

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

o:

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

Per i primi 20 file più grandi nella directory corrente (ricorsivamente):

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

o con dimensioni leggibili dall'uomo:

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

Il secondo comando per funzionare correttamente su OSX / BSD (come sortnon ha -h), è necessario installare sortda coreutils. Quindi aggiungi la cartella bin al tuo PATH.

È possibile definire questi comandi come alias (ad es. Aggiungere ai file rc come .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'

Quindi esegui bigo big-filesall'interno delle cartelle che ritieni abbiano luogo (ad es /home. In).


0

ecco qualcosa che ho messo insieme per rintracciare alcuni processi canaglia sui nostri server di database: 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

è un po 'kludgey e non molto robusto, ma funziona così:

  1. genera un elenco ad albero ricorsivo della directory corrente
  2. attendere 5 secondi
  3. genera un altro elenco
  4. confrontare le due uscite
  5. fondere i file che hanno cambiato dimensione e
  6. ps -lFp mostrerà ai file quale processo li possiede

    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
    
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.