Trovare cosa sta usando tutto lo spazio in * nix


21

Quale sequenza di comandi mi dirà quali file sono i più grandi a partire da una directory particolare, comprese tutte le directory secondarie? Voglio sapere dove è andato tutto lo spazio.

Preferibilmente solo con i normali comandi unix'y.

Se possibile, prova a mantenerlo compatibile con Sun OS 5.10 (forse in aggiunta alle normali risposte di Linux, non in sostituzione, per mantenerlo il più generale possibile).


Ci sono due voti per SU e due per SF. Qual è più appropriato? Questo potrebbe appartenere a uno dei due, secondo me.
mmyers,

5
@mmyers: ha dato a SU ... SU ha bisogno di domande reali!
Shog9

1
Ma SU ha già una domanda molto simile! superuser.com/questions/9847/…
Jonik il

Risposte:


11

Personalmente mi piace usare du -sh *per vedere quanto è grande ogni directory all'interno della directory corrente.

Inoltre è possibile ordinare di avere le cartelle più grandi prima: du -shx * | sort -hr. Per du:

  • -s, --summarize: visualizza solo un totale per ogni argomento
  • -h, --human-readable: formati di stampa in formato leggibile dall'uomo (ad es. 1K 234M 2G)
  • -x, --one-file-system: salta le directory su diversi file system

Per sort:

  • -h, --human-numeric-sort: confronta i numeri leggibili dall'uomo (es. 2K 1G)

Questo è in realtà molto utile con una minorenne mod: du -s * | sort -nr.
Alex Budovski,

5
È possibile mantenere le dimensioni dei file in formato leggibile dall'uomo con du -sh * | sort -hr.
Jorge Israel Peña,

du -shx * | sort -hrè buono ma restituisce solo la directory corrente. Come farei questo sistema a livello? E come potrei escludere tutto sotto 100 MB? Grazie.
tem

Dipende dalla sua invocazione alla shell. Quindi *è ciò che lo rende applicabile a tutto nella directory corrente, ma puoi facilmente cambiarlo in ad esempio some/other/path/*, o se vuoi semplicemente eseguirlo su una singola directory nel suo insieme, quindi ometti il *modello glob. Per quanto riguarda il filtraggio delle cose, forse fai una domanda separata.
Jorge Israel Peña,

Per eseguirlo in modo ricorsivo a livello di sistema, è possibile associarlo finda una directory root e utilizzare il suo -execparametro per richiamare du. Il findprogramma stesso può probabilmente filtrare in base alla dimensione del file con qualcosa di simile size +100M. Vedere questa domanda . Forse qualcosa del genere find / -size +100M -exec du -sh {} \; | sort -hr, anche se non testato.
Jorge Israel Peña,

13

ncdu

È semplicemente fantastico: CLI, basato su ncurses, veloce, semplice. Installalo con sudo apt install ncdu.

inserisci qui la descrizione dell'immagine


5

in pratica puoi usare il comando du. qualcosa come questo

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

per favore guarda la pagina man o le informazioni du per ulteriori opzioni.

Oppure puoi usare GNU find.

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

'Find' su Sun OS 5.10 ha un'alternativa che posso usare per -printf?
Alex Budovski,

Inoltre, c'è un modo per ottenere il primo comando (du ...) per filtrare le directory? Sono davvero interessato solo ai file, come con il tuo secondo comando.
Alex Budovski,

5

Non da riga di comando ma ancora unix'y: kdirstat

Lo uso per scoprire dove è andato tutto lo spazio e mi piace molto meglio di Disk Usage Analyzer (aka Baobab). È una delle poche app di KDE tollerata nel mio ambiente GNOME ;-)

inserisci qui la descrizione dell'immagine

Secondo kdirstat.sourceforge.net funziona su Solaris.

Mentre KDirStat è un programma KDE, funziona bene su ogni desktop X11, vale a dire, funziona su Linux, BSD e molti altri sistemi di tipo Unix (Solaris, HP-UX, AIX, ...).


In Ubuntu: k4dirstat e qdirstat. L'ultimo più aggiornato. Non mi piace il fatto che consentano di eliminare le cartelle
develCuy


3
du -a | sort -n

farebbe il lavoro. Usando baobab (fa parte dei programmi di utilità gnome, quindi probabilmente è già installato sul tuo sistema), ottieni una bella suddivisione grafica dello spazio usato.


Qualche motivo per usare -g invece di -n? "Usa questa opzione solo se non c'è alternativa; è molto più lenta di --numeric-sort (-n) e può perdere informazioni durante la conversione in virgola mobile." Gnu.org/software/coreutils/manual/html_node/…
da

@therefromhere: ho usato la manpage, che non è così dettagliata come il sito che hai collegato. Ho appena scelto la prima opzione che ha funzionato per il caso particolare. Ma hai ragione; Ho modificato la mia risposta. Grazie!
Balpha,

3

Analizzatore di utilizzo del disco

Se stai usando una distro basata su Debian / Ubuntu ci sono un paio di GUI disponibili nei repository, che puoi trovare usando synaptic.

inserisci qui la descrizione dell'immagine


3
du . -ha | sort -hr
  • -a, --all: scrivere conta per tutti i file, non solo per le directory
  • -h, --human-readable: formati di stampa in formato leggibile dall'uomo (ad es. 1K 234M 2G)

1
Trovo che sia possibile pronunciare quel comando molto divertente. Sembra anche divertente.
jtbandes,

2
-1, questo è sbagliato. La "-h" nel comando du interrompe l'ordinamento.
da

1
Non è sbagliato, non è portatile. -h è un GNUismo. Utilizzare -k invece con Sun OS.
Ludwig Weinzierl,

+ Ludwig Non penso che tu abbia capito. Aggiungendo -h rende i numeri leggibili dall'uomo, quindi non sono più numeri che possono essere usati dal comando sort. ad es. le cose verrebbero ordinate in questo modo: "760K 784M 788K 860K 944K 985M" Dovrebbe essere du -ha | sort -hro du -ha | gsort -hr(su osx dopo aver installato i programmi di utilità principali)
Gerry,

2

Comandante di mezzanotte

Se desideri un elenco di output con una buona interfaccia grafica e opzioni di navigazione, installa Midnight Commander ( mcnella maggior parte dei gestori di pacchetti) e seleziona "mostra dimensioni directory" nel menu comandi. Inoltre puoi Ctrl+ space.

inserisci qui la descrizione dell'immagine

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.