Pourquoi les commandes «df» et «du» montrent-elles une utilisation différente du disque?

26

Je ne peux pas accéder au système Ubuntu sur mon PC, le message d'erreur: " le système fonctionne en mode graphique bas " et j'ai essayé certaines commandes que j'ai recherchées sur Internet.

J'ai découvert qu'un problème semble ne pas avoir d'espace disque disponible. J'ai utilisé les commandes " df " et " du " pour vérifier, les résultats sont les suivants:

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

et

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

comment pourrais-je nettoyer le système pour plus d'espace disque?

user2068965
la source
La question dans le titre et à la fin du corps de la question est assez différente. Certaines réponses sont liées à une question, certaines à l'autre. Vous devez clarifier vos besoins réels et éventuellement accepter une réponse également.
Melebius

Réponses:

50

Vous savez très probablement que vous pouvez supprimer un fichier qui est toujours utilisé par une application et pour cette application, il reste disponible. Cela parce que le descripteur de fichier dans / proc / filesystem est maintenu ouvert.

Donc, s'il existe de tels descripteurs ouverts aux fichiers déjà supprimés, l'espace qu'ils occupent est considéré comme utilisé par df(et a dfraison), mais ils ne peuvent pas être pris en compte ducar il n'y a plus de noms de fichiers qui leur sont associés.

Vous pouvez trouver tous les fichiers ouverts non liés mais conservés avec:

# lsof | grep '(deleted)'
Dmitry Alexandrov
la source
7
Cela m'a sauvé. Je ne savais pas pourquoi mon disque était plein, mais du a dit qu'il était vide. Un descripteur de fichier ouvert pour un fichier de 8 Go
Cheyne
5
Comment puis-je supprimer les liens?
Vikas Hardia
1
Parfois, vous devez l'exécuter en tant que root pour voir les fichiers supprimés maintenus ouverts par les processus d'autres utilisateurs.
Envek
1
La cause profonde de cela pour moi a fini par être une spécification de fichier journal incorrecte dans l'un de mes /etc/logrotate.dfichiers. La mauvaise entrée manquait une routine postrotate, ce qui a empêché mon processus démon de lâcher ses fichiers pivotés / supprimés.
Dale Anderson
comment pourrais-je supprimer ces fichiers non liés mais ouverts?
zx1986
14

Comment puis-je supprimer les liens? - Vikas Hardia 22 août 14 à 5:46

Vous devez trouver le processus qui contient le descripteur de fichier. Utilisez la commande de Dmitry Alexandrov, là vous voyez le processus et le pid. Dans notre cas et le "vieux" fichier journal de vernis était le tueur d'espace.

# 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

N'oubliez pas de redémarrer le service ou le processus s'il s'agit d'un démon ou d'un autre service sur votre ordinateur. Si vous le pouvez, redémarrez simplement l'ordinateur;)

Octeny
la source
9

Ok, vérifions les pages de manuel:

df - signaler l'utilisation de l'espace disque du système de fichiers

et

du - estimation de l'utilisation de l'espace fichier

Ces deux outils étaient destinés à des propositions différentes. Tandis que dfpour montrer l'utilisation du système de fichiers, duc'est pour signaler l'utilisation de l'espace fichier. dufonctionne à partir de fichiers tout en dftravaillant au niveau du système de fichiers, rapportant ce que le noyau dit qu'il a à disposition. Continuez à lire la dupage de manuel

Résumez l'utilisation du disque de chaque FICHIER , récursivement pour les répertoires.

il dit dufonctionne avec des fichiers.

dfaffiche la quantité d'espace disque disponible sur le système de fichiers contenant chaque argument de nom de fichier. Si aucun nom de fichier n'est donné, l'espace disponible sur tous les systèmes de fichiers actuellement montés est affiché.

dit ici que dfne se soucient pas des fichiers mais du système de fichiers lui-même.

Braiam
la source
du usage peut être modifié avec le caractère -x, pour lui dire de ne compter que les fichiers sur le système de fichiers donné.
macetw
1

Dit simplement:

Vous avez couru dusans autorisations root. Il est donc pas en mesure de vérifier l'espace disponible dans /proc, /mnt, etc, dossiers.

df ont montré respectivement l'espace total utilisé et l'espace libre.

Donc, lorsque vous vérifiez le système de fichiers racine Linux, prenez le durapport comme final.

Sekra Invos
la source
0
df

Résumer l'espace disque libre

Il affiche la quantité d'espace disque disponible.

du

Résumez l'utilisation du disque.

Il affiche la quantité d'espace disque utilisé.

Mitch
la source
oui, mais dans le résultat de "df -Th", il a montré 68G utilisé. aujourd'hui matin quand j'essaye d'accéder au système ubuntu, il donne toujours le message "le système fonctionne en mode low-graphics", mais quand je vérifie l'utilisation de la mémoire, les commandes "df" et "du" montrent un résultat raisonnable. Mais quel est le problème avec le "mode graphique bas"?
user2068965
Jetez un oeil à ceci .
Mitch
0

rien de si déroutant: voici le look: =

1) du == Utilisation du disque
Combien d'espace disque est utilisé par ces fichiers?

2) df == Disque libre
Combien d'espace disque libre avons-nous?

Aussi pour le système fonctionne en mode graphique bas « ici »

Avani badheka
la source
0

J'ai fait
sudo du -hxa / | egrep '^[[:digit:]]{1,1}G[[:space:]]*'

Cela expliquait exactement le grand écart de 21 Go que je voyais!
Le fichier en question était / swap file if 21GB !!

user727981
la source