Connect with us

Linux

Come usare il comando df in Linux / Unix {con esempi}


We utilizzare il comando df per trovare lo spazio su disco totale e lo spazio disponibile su un file system Linux/Unix. Vediamo come utilizzare il comando df per visualizzare la quantità di spazio libero rimasto sul tuo file system Linux, macOS, *BSD e Unix. Spiegheremo anche come automatizzare il monitoraggio dello spazio su disco e inviare un avviso e-mail o una notifica push al tuo dispositivo mobile.

Il df è uno strumento essenziale per uno sviluppatore in quanto riporta la quantità di spazio su disco utilizzato e disponibile su file Linux o file system Unix.

Cos’è il comando df?

Il df è l’acronimo di disk free.

Il comando df indica la quantità di spazio utilizzato e disponibile sul file system. Un filesystem non è altro che una gerarchia di directory. Ad esempio, la figura 01 mostra tutto ciò che è montato sul mio laptop Linux nella directory principale (/), che è la directory superiore nella gerarchia delle directory che utilizzano il comando tree. Alcuni filesystem come /mirror-nixcraft-m6700 o /media si trovano fisicamente su diverse partizioni/dischi USB o su un altro computer in rete.

Figura 01: una gerarchia di directory con / (root) come directory principale

Scopo

Utilizzare il comando df per visualizzare lo spazio disponibile su un file system:

  1. Visualizza lo spazio utilizzato.
  2. Visualizza lo spazio libero su disco.
  3. Mostra quali filesystem sono montati.
  4. Scopri se è stata raggiunta la capacità del disco su una partizione o su altri dispositivi in ​​rete.
  5. Elenca il numero di inode ancora disponibili per Linux e Unix box
  6. Scopri se c’è spazio sufficiente su una determinata partizione in modo che gli sviluppatori o gli amministratori di sistema possano installare/aggiornare le app
  7. Invia avvisi e-mail o messaggi di testo utilizzando uno script shell o uno script Perl quando lo spazio su disco è esaurito.

Sintassi

La sintassi di base per il comando df è semplice:
df
df /dir
df [option] [/dev/DEVICE]

Usando il comando df

Per visualizzare le informazioni su tutti i file system Linux o Unix montati, immettere:
df

L’output potrebbe essere leggermente diverso sulla versione GNU/Linux di df:


Filesystem           1K-blocks      Used Available Use% Mounted on
devtmpfs                 10240         0     10240   0% /dev
shm                    3702044         0   3702044   0% /dev/shm
rpool/ROOT/alpine    471240576  96435456 374805120  20% /
tmpfs                   740412       220    740192   0% /run
/dev/sda1                91869     28015     56686  33% /boot

Il comando df e lo spazio possono avere le seguenti informazioni per ogni nome di dispositivo:

  • File system : Il nome del tuo file system/dispositivo.
  • 1K-blocchi : la dimensione in blocchi da un kilobyte.
  • Usato : quantità totale di spazio allocato e utilizzato dai file esistenti nel file system (FS).
  • disponibile (Usato A disposizione) : Spazio totale disponibile (spazio libero) nel file system per la creazione di nuovi file.
  • Capacità (Utilizzo%) : La percentuale di blocchi utilizzati dalle FS.
  • Montato su : il punto di montaggio è la directory in cui è montato.

Si prega di notare che alcuni file system avanzati e versioni df possono anche segnalare lo spazio riservato dal sistema.

Esempi

Il comando df ha molte più opzioni. Esaminiamo le opzioni più comunemente utilizzate.

Informazioni sui file system

Per visualizzare informazioni su /avvio o /snapshot file system, eseguire:
df /boot
df /rsnapshot

Ecco cosa vedo:

Filesystem       1K-blocks     Used      Avail Capacity  Mounted on
zroot/rsnapshot 3133726266 83069592 3050656673     3%    /rsnapshot

Possiamo visualizzare le informazioni in vari formati di blocco. Ad esempio, vedi blocchi da 1 Mbyte, esegui:
df -m
df -m /boot

Per blocchi da 1 Gibibyte, esegui:
df -g
df -g /var

Possiamo usare esplicitamente blocchi da 512 byte:
df -b
df -b /usr

Passa il -K per blocchi da 1024 byte (predefinito):
df -k
df -k zroot/var/log

Possiamo specificare il dispositivo ZFS come zroot/var/log o /dev/md0 (Linux RAID) e /dev/sdb1 (partizione Linux) oltre al punto di montaggio FS come /aws_efs:
df /aws_efs
df zroot/ROOT/default
df /dev/md0
df -h /dev/sdb1

Output leggibile dall’uomo

Forse la cosa più importante è l’output “Leggibile dall’uomo” passando il -h opzione. Utilizza suffissi di unità come Byte, Kibibyte, Mebibyte, Gibibyte, Tebibyte e Pebibyte (basato su potenze di 1024). Ottieni la facilità di lettura poiché df riduce il numero di cifre a quattro o meno. Si prega di notare il -H è uguale a -h ma basato su potenze di 1000:
df -h # lowercase 'h'
df -H # UPPERCASE 'H'
df -H zroot/tmp
df -H /dev/md0

Filesystem                  Size    Used   Avail Capacity  Mounted on
zroot/ROOT/default          3.3T    129G    3.1T     4%    /
devfs                       1.0k    1.0k      0B   100%    /dev
zroot/tmp                   3.1T    164k    3.1T     0%    /tmp
zroot                       3.1T    131k    3.1T     0%    /zroot
zroot/rsnapshot             3.2T     85G    3.1T     3%    /rsnapshot
zroot/backuplxdimages       3.5T    350G    3.1T    10%    /backuplxdimages
zroot/jails                 3.1T    131k    3.1T     0%    /jails
zroot/usr/home              3.2T     33G    3.1T     1%    /usr/home
zroot/var/crash             3.1T    638M    3.1T     0%    /var/crash
zroot/var/mail              3.1T    257k    3.1T     0%    /var/mail
zroot/var/audit             3.1T    131k    3.1T     0%    /var/audit
zroot/var/log               3.1T    2.6M    3.1T     0%    /var/log
zroot/usr/ports             3.1T    1.0G    3.1T     0%    /usr/ports
zroot/var/tmp               3.1T    131k    3.1T     0%    /var/tmp
zroot/usr/src               3.1T    131k    3.1T     0%    /usr/src
zroot/jails/dnscrypt        3.1T    887M    3.1T     0%    /jails/dnscrypt
zroot/jails/fullbasejail    3.1T    692M    3.1T     0%    /jails/fullbasejail
devfs                       1.0k    1.0k      0B   100%    /jails/dnscrypt/dev

Stampa tipo di filesystem

Vuoi includere il tipo di file system nell’output del comando df? Prova a passare il -T opzione:
df -T
df -T -H
df -T -H zroot/usr/ports
df -T -H /dev/md0

I seguenti output indicano che /dev/md0 è formattato come ext4:

Filesystem     Type  Size  Used Avail Use% Mounted on
/dev/md0       ext4  3.9G  350M  3.4G  10% /boot

Un altro output che indica vfat FS sul mio laptop Thinkpad montato su /boot/efi:
df -T -H /dev/nvme0n1p1

Filesystem     Type  Size  Used Avail Use% Mounted on
/dev/nvme0n1p1 vfat  998M   46M  952M   5% /boot/efi

Possiamo anche vedere informazioni leggibili dall’uomo per il file system contenente il file /backuplxdimages/ncbz01/01-03-2021/rss-feed-worker-backup.tar.xz:
df -HT /backuplxdimages/ncbz01/01-03-2021/rss-feed-worker-backup.tar.xz

Filesystem             Type    Size    Used   Avail Capacity  Mounted on
zroot/backuplxdimages  zfs     3.5T    350G    3.1T    10%    /backuplxdimage

Mostra le statistiche sul numero di inode gratuiti e utilizzati

Passa il -io come segue:
df -i
df -i -H
df -i -H -T

Ora abbiamo anche il numero di inode:

Filesystem     Type     Inodes IUsed IFree IUse% Mounted on
udev           devtmpfs   2.1M   317  2.1M    1% /dev
tmpfs          tmpfs      2.1M   556  2.1M    1% /run
/dev/xvda1     ext4        41M  105k   41M    1% /
tmpfs          tmpfs      2.1M     1  2.1M    1% /dev/shm
tmpfs          tmpfs      2.1M     3  2.1M    1% /run/lock
tmpfs          tmpfs      2.1M    18  2.1M    1% /sys/fs/cgroup
/dev/loop0     squashfs     17    17     0  100% /snap/amazon-ssm-agent/2996
/dev/loop1     squashfs     16    16     0  100% /snap/amazon-ssm-agent/3552
/dev/loop3     squashfs    13k   13k     0  100% /snap/core/10958
/dev/loop4     squashfs    11k   11k     0  100% /snap/core18/1988
/dev/loop5     squashfs    11k   11k     0  100% /snap/core18/1997
/dev/loop6     squashfs   1.6k  1.6k     0  100% /snap/lxd/20371
tmpfs          tmpfs      2.1M     3  2.1M    1% /var/snap/lxd/common/ns
/dev/loop8     squashfs    13k   13k     0  100% /snap/core/11081
/dev/loop2     squashfs   1.6k  1.6k     0  100% /snap/lxd/20400
tmpfs          tmpfs      2.1M    22  2.1M    1% /run/user/1000

Mostra tutti i punti di montaggio, inclusi quelli montati con varie bandiere

Passa il -un per vedere tutti i file system:
df -a
Nella maggior parte dei casi, potresti voler nascondere l’output da filesystem come udev, tmpfs, cgroup, securityfs, lxcfs, devfs e così via. Possiamo farlo usando il comando grep/egrep o passando il comando -t TIPO_FS opzione per limitare l’elenco ai file system di tipo FS_TYPE::
df -T | grep -v squashfs
df -T | egrep -v 'squashfs|lxcfs|udev'
df -t ext4
df -t zfs
df -t zfs,ext4,vfat

Solo guide per i sostenitori di Patreon ????

  • Nessuna pubblicità e tracciamento
  • Guide approfondite per sviluppatori e amministratori di sistema su Opensourceflare✨
  • Unisciti al mio Patreon per supportare i creatori di contenuti indipendenti e iniziare a leggere le ultime guide:

Aderire Patreon ?

Script della shell di avviso del disco

Ecco uno script di shell di esempio che monitora l’utilizzo dello spazio su disco del mio server AWS EC2 e Linode e invia un avviso e-mail e invia una notifica mobile quando l’utilizzo del disco supera il 90%

#!/bin/bash
# Name: disk-monitor-script.sh
# Usage: Poor mans disk space monitoring script to alert sysadmin/developer before running
#        out of disk/partition space.
# Author: Vivek Gite under GPLv 2.x+
#
# Warning: *** DO NOT USE THIS SCRIPT BLINDLY. *** 
#          *** This script mostly fails in your environment if requirements are not met. *** 
#
# Prerequisite (or as per your set up): 
#    You must have working SMTPD/email routing in place and subscription to pushover
#    notifications service for Android, iPhone, iPad, etc all:
#    a) Pushover - https://www.cyberciti.biz/mobile-devices/android/how-to-push-send-message-to-ios-and-android-from-linux-cli/
#    b) AWS SES - https://www.cyberciti.biz/faq/how-to-send-emails-with-postfix-and-amazon-aws-ses-on-rhel-centos-8/
# 
# Tested on - RHEL 7.x/8.x and Debian/Ubuntu LTS versions 
# 
# Last revised - 12/Jan/2017 by Vivek Gite, added $DC_P
# -----------------------------------------------------------------------------------------
DC_P="AWS" # either AWS or Linode 
ADMIN="foo@somewhere-tld"
FROM="system-user-ec2@my-corp-tld"
SUBJECT="Alert out of disk space - $HOSTNAME [${DC_P}]"
 
# Set alert level 90% is default
ALERT=90
 
# See https://www.cyberciti.biz/mobile-devices/android/how-to-push-send-message-to-ios-and-android-from-linux-cli/
source /home/scripts/cli_app.sh
 
# Send html email and push notification to my iPhone/Android device
df -H | grep -vE '^Filesystem|tmpfs|udev' | awk '{ print $5 " " $1 }' | while read -r output;
do
  usep=$(echo "$output" | awk '{ print $1}' | cut -d'%' -f1  )
  partition=$(echo "$output" | awk '{ print $2 }' )
  if [ $usep -ge $ALERT ]; then
(
echo "From: $FROM"
echo "To: $ADMIN"
echo "Subject: $SUBJECT"
echo "Content-Type: text/html"
echo
 
echo "<html>"
 
echo "<p>Hostname : $HOSTNAME</p>"
echo "<p>Date : $(date)</p>"
 
echo "<p>Running out of disk space on: <strong>$partition</strong> <span style="color: rgb(255, 0, 0);">${usep}</span>%</p>"
 
echo "<p><h4>Current disk space usage:</h4>"
echo "$(df -H | column -t)"
echo "</p>"
 
echo "<p><h4>Current memory usage:</h4>"
echo "$(free -m)"
echo "</p>"
 
echo "You own me one."
echo "<p>-- $0</p>"
 
echo "</html>"
echo
) | sendmail -f "$FROM" "$ADMIN"
 
  push_to_mobile "$0" "Alert out of disk space - $HOSTNAME [${DC_P}]
 
  Running out of disk space on: $partition (${usep}%)
 
  Current disk space usage:
  $(df -H | column -t)
 
  "
  fi
done

Esegui questo script usando cron job:
@daily /path/to/disk-monitor-script.sh

Ottenere aiuto sul comando df

Tutto quanto sopra sono opzioni di comando df standard. Tuttavia, la diversa variante di Unix offre opzioni aggiuntive. Puoi leggere queste opzioni digitando il seguente comando man o visualizza la versione BSD/df online che viene utilizzata da *BSD e macOS. Vedi la pagina di aiuto della versione GNU/Linux df qui:
man df
df --help

Riassumendo

Hai imparato a conoscere il comando df e la sua opzione su Linux o Unix. Abbiamo spiegato vari esempi di comandi df pure. Gli sviluppatori Linux e l’amministratore di sistema Unix devono monitorare l’utilizzo dello spazio su disco. Altrimenti rischi di esaurirlo. Ecco una breve sinossi per i tuoi riferimenti:

Il riepilogo del comando df per Unix/macOS/*BSD e Linux
opzione df Descrizione
-P Formato di output POSIX. Usa esplicitamente blocchi da 512 byte.
-K Blocchi da 1024 byte (predefinito)
-m Blocchi da 1 Mbyte
-G Blocchi da 1 Gibibyte
-h Leggibile dall’uomo (ad es. 1K 243M 2G)
-H Leggibile dall’uomo con 1000 blocchi
-T Stampa tipo di filesystem
-t tipo Limita l’elenco ai file system di tipo TYPE
-un Mostra tutti i filesystem
-io Ottieni informazioni su Inode
-TAGLIA B Imposta la dimensione del blocco. Puoi anche usare il MISURA DEL BLOCCO variabili ambientali. Per esempio,
DIMENSIONE BLOCCO=512 df


ANNUNCIO



Ti e piaciuto questo articolo?
Supporta il mio lavoro, facendo una donazione!

Click to comment

Leave a Reply

Esegui l'accesso per Commentare.

Di tendenza

Close Popup
Questo sito utilizza i cookie per migliorare servizi ed esperienza dei lettori. Se decidi di continuare la navigazione senza blocchi premi su Accetto, oppure continua tranquillamente la navigazione, nessun dato sulla tua navigazione verrà raccolto.
Close Popup
Privacy Settings saved!
Impostazioni

Quando visiti un sito Web, esso può archiviare o recuperare informazioni sul tuo browser, principalmente sotto forma di cookies. Controlla qui i tuoi servizi di cookie personali.

Questi cookie sono necessari per il funzionamento del sito Web e non possono essere disattivati nei nostri sistemi.

Cookie tecnici
Per utilizzare questo sito web usiamo i seguenti cookie tecnici necessari:
  • wordpress_test_cookie
  • wordpress_logged_in_
  • wordpress_sec
  • swpm_session

Google Adsense
Usiamo la pubblicità di Google solo per mantenere attivi i nostro sito. Con ip anonimizzati.

Rifiuta tutti i Servizi
Save
Accetta tutti i Servizi