Df
| Fiche express | |
|---|---|
| Domaine | Espace disque (systèmes de fichiers) |
| Commande | df
|
| Contexte | Espace disponible/utilisé par système de fichiers monté |
| Voir aussi | Du (espace occupé par des fichiers), Lsof (fichiers ouverts) |
df (disk free) affiche l'espace disponible et utilisé sur les systèmes de fichiers montés. Contrairement à Du qui parcourt une arborescence de fichiers, df interroge directement les systèmes de fichiers (bien plus rapide, mais moins précis sur "qui consomme quoi").
Commandes de base
df # tailles brutes en blocs de 1K
df -h # lisible par un humain (Ko/Mo/Go/To)
df -T # affiche aussi le type de système de fichiers (ext4, xfs, nfs...)
df -hT # les deux combinés
df -P # format "portable" POSIX, une ligne par système de fichiers (utile en script)
df -hTP # combinaison courante pour un affichage lisible et stable
Sans -P, une ligne de df peut être coupée sur deux lignes d'affichage quand le nom du système de fichiers est long (typiquement les montages réseau) — ce qui casse le parsing en script (awk, grep sur des colonnes fixes). -P force une ligne par entrée, quelle que soit la longueur du nom.
Exclure un type de système de fichiers
Utile pour ignorer les montages réseau (NFS, SMB) qui peuvent ralentir la commande ou polluer la sortie avec des chemins non pertinents :
df -hTP -x nfs -x smbfs # exclut les FS de type nfs et smbfs
df -hTP -x tmpfs -x devtmpfs # exclut les FS en mémoire (souvent sans intérêt)
À l'inverse, -t restreint l'affichage à un type précis (par exemple df -hT -t ext4).
df vs du : ne pas confondre
- df : espace disponible/utilisé au niveau du système de fichiers (ce que le noyau connaît réellement).
- Du : espace utilisé en parcourant une arborescence de fichiers (ce que la commande peut voir et compter).
Ces deux vues divergent régulièrement, et le cas le plus classique est un disque annoncé plein par df alors qu'un du -sh / ne retrouve pas l'espace correspondant : un processus a encore ouvert un fichier qui a été supprimé (rm) entre-temps. Le fichier n'apparaît plus dans l'arborescence (donc invisible pour du), mais son espace n'est libéré par le noyau qu'à la fermeture du descripteur par le processus (donc toujours compté par df). Cas typiques : logs applicatifs supprimés en cours de rotation, ou un service qui écrit dans un fichier temporaire jamais refermé. Diagnostic : Lsof avec l'option +L1 (ou lsof | grep deleted) pour lister les fichiers supprimés mais encore ouverts, avec le PID responsable — un kill/redémarrage du processus (ou truncate du descripteur via /proc/PID/fd/) libère alors l'espace.
Idiome : date d'installation d'un système via df + tune2fs
Sur un système ext2/3/4, la date de création du système de fichiers racine correspond en général à la date d'installation du système (le FS est créé une seule fois, au moment du partitionnement initial) :
df / | awk '{print $1}' | grep dev | xargs tune2fs -l | grep create
Le principe : df / donne le device monté sur la racine (par exemple /dev/sda1), tune2fs -l affiche les métadonnées de ce système de fichiers (dont "Filesystem created"), et le pipeline extrait uniquement cette ligne. Fonctionne uniquement sur des FS de la famille ext (ext2/ext3/ext4) — sur xfs ou btrfs, utiliser respectivement xfs_info ou btrfs filesystem show, qui n'exposent pas la même métadonnée directement.