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.