Perché i comandi "df" e "du" mostrano un diverso utilizzo del disco?


26

Non riesco ad accedere al sistema Ubuntu sul mio PC, il messaggio di errore: " il sistema funziona in modalità grafica bassa " e ho provato alcuni comandi che ho cercato da internet.

Ho scoperto che un problema sembra che non ci sia spazio disponibile su disco. Ho usato i comandi " df " e " du " per controllare, i risultati sono i seguenti:

du -j --max-depth=1
23G  ./home
3.3G ./usr 
...... 
28G

e

df -Th 
filesystem   Type   size    used   available   use%    mounted on 
/dev/sda5    ext4   68G     68G    0           100%    /

come ripulirei il sistema per più spazio su disco?


La domanda nel titolo e alla fine del corpo della domanda è piuttosto diversa. Alcune risposte sono correlate a una domanda, altre all'altra. Dovresti chiarire le tue reali esigenze e possibilmente accettare anche una risposta.
Melebio

Risposte:


50

Molto probabilmente sai che puoi rimuovere un file che è ancora in uso da alcune applicazioni e per questa applicazione rimane disponibile. Questo perché il descrittore di file in / proc / filesystem è tenuto aperto.

Quindi, se ci sono descrittori così aperti nei file già rimossi, lo spazio occupato da essi viene considerato come usato da df(ed dfè giusto), ma non possono essere presi in considerazione duperché non ci sono più nomi di file associati.

Puoi trovare tutti i file aperti ma non collegati ma tenuti con:

# lsof | grep '(deleted)'

7
Questo mi ha appena salvato. Non avevo idea del perché il mio disco fosse pieno, ma du ha detto che era vuoto. Un handle di file aperto per un file da 8 GB
Cheyne,

5
Come posso eliminare i collegamenti?
Vikas Hardia,

1
A volte è necessario eseguirlo come root per vedere i file eliminati tenuti aperti dai processi di altri utenti.
Envek,

1
La causa principale di questo per me ha finito per essere una specifica errata del file di registro in uno dei miei /etc/logrotate.dfile. Nella voce errata mancava una routine postrotate, che causava al mio processo daemon di non rilasciare i file ruotati / eliminati.
Dale Anderson,

come potrei rimuovere quei file non collegati ma aperti?
zx1986,

14

Come posso eliminare i collegamenti? - Vikas Hardia, 22 agosto 14 alle 5:46

È necessario trovare il processo che contiene l'handle del file. Usa il comando di Dmitry Alexandrov, lì vedi il processo e pid. Nel nostro caso e il "vecchio" file di registro della vernice era il killer dello spazio.

# lsof | grep '(deleted)'
[...]
varnishlo 13978       varnishlog    3w      REG              252,1 318448027646    5926973 /var/log/varnish/varnish.log.1 (deleted)
apache2   16801         www-data    2w      REG              252,1        64550   13110120 /var/log/apache2/error.log.1 (deleted)
[...]
# service varnishlog stop
[or if there is no service script]
# kill -11 13978 (the second number of the lsof command is the pid)
[or may be] 
# kill -9 13978

Non dimenticare di riavviare il servizio o elaborare nuovamente se è un demone o qualche altro servizio sul tuo computer. Se puoi, riavvia il computer;)


9

Ok, controlliamo le pagine man:

df - segnala l'utilizzo dello spazio su disco del file system

e

du - stima l' utilizzo dello spazio file

Questi due strumenti erano pensati per proposte diverse. Mentre dfè per mostrare l'utilizzo del file system, duè per segnalare l'utilizzo dello spazio file. dufunziona da file mentre dffunziona a livello di filesystem, riportando ciò che il kernel dice di avere a disposizione. Continua a leggere la dumanpage supportando questo:

Riassumi l'utilizzo del disco di ciascun FILE , ricorsivamente per le directory.

dice che dufunziona con i file.

dfvisualizza la quantità di spazio su disco disponibile sul file system contenente ogni argomento relativo al nome del file. Se non viene fornito alcun nome file, viene mostrato lo spazio disponibile su tutti i file system attualmente montati.

qui dice che dfnon importa dei file ma del filesystem stesso.


du use può essere modificato con il carattere -x, per dirgli di contare solo i file sul file system specificato.
macetw

1

Detto semplicemente:

Hai eseguito dusenza i permessi di root. Quindi non è in grado di controllare lo spazio disponibile in /proc, /mntecc, cartelle.

df ha mostrato rispettivamente lo spazio totale utilizzato e lo spazio libero.

Quindi, quando controlli il file system di root di Linux, prendi il durapporto come finale.


0
df

Riassumi lo spazio libero su disco

Visualizza la quantità di spazio su disco disponibile.

du

Riassumi l'utilizzo del disco.

Visualizza la quantità di spazio su disco utilizzata.


sì, ma nel risultato di "df -Th", ha mostrato 68G usati. oggi mattina quando provo ad accedere al sistema Ubuntu, viene comunque visualizzato il messaggio "il sistema funziona in modalità a bassa grafica", ma quando controllo l'utilizzo della memoria, i comandi "df" e "du" mostrano un risultato ragionevole. Ma quale è il problema con la "modalità grafica bassa"?
user2068965

Dai un'occhiata a questo .
Mitch

0

niente di così confuso: ecco look: =

1) du == Uso del disco
Quanto spazio su disco viene utilizzato da questi file?

2) df == Disk Free
Quanto spazio libero su disco abbiamo?

Anche per il sistema è in esecuzione in modalità grafica bassa ' qui '


0

L'ho fatto
sudo du -hxa / | egrep '^[[:digit:]]{1,1}G[[:space:]]*'

Ha rappresentato esattamente la grande discrepanza di 21 GB che stavo vedendo!
Il file in questione era / file di scambio se 21 GB !!

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.