Comando -df-

Comando df
El comando df (disk free), es una herramienta CLI del tipo Unix que nos permite conocer la cantidad de espacio libre y espacio utilizado por nuestro sistema de archivos en nuestras unidades de almacenamiento. Importante tener en claro esto ya que es solo de nuestras unidades de almacenamiento, y no de nuestros archivos y directorios.
Este programa es parte de los llamados built-in, programas que por defecto ya vienen instalados en el sistema operativo.
Objetivo de éste artículo
En esta entrada aprenderás como usar el comando df en GNU/Linux. El principal objetivo es que conozcas las opciones del comando df: para que sirven y como conjugarlas con su sintaxis. En el desarrollo se explicará como leer su interfaz y como solicitar los resultados en diferentes unidades de información. También aprenderá a personalizar las peticiones para obtener resultados específicos.
Manual del comando df
Para desarrollar este artículo haremos uso de su manual como guía. Llamamos esta documentación que se encuentra disponible en nuestro sistemas ejecutando la linea man df
que se corresponde a la sintaxis del comando man, imprimiendonos en pantalla la siguiente salida:
Sintaxis
El comando df se corresponde con la siguiente sintaxis:
df [opciones] [directorios]
Interfaz del comando df
Conozcamos la interfaz del comando df. Al ejecutar df
, de forma predeterminada no imprime en pantalla información sobre los sistemas de archivos accesibles en forma de tabla.
df
La interfaz se nos presenta en forma de tabla, donde cada columnas representa respectivamente.
- S.ficheros: El nombre de lo archivo del sistema.
- Bloques de 1k: Indica el tamaño total de la unidad de almacenamiento.
- Usado: Muestra cuando espacio está siendo ocupado en cada archivo del sistema.
- Disponible: Muestra cuando espacio disponible queda para cada archivo del sistema.
- Uso%: Muestra el porcentaje del espacio que está siendo usado.
- Montado en: Nos muestra el directorio donde esta cada archivo del sistema.
Es importante también reconocer los nombres de los directorios de sistema, para identificar sobre que se esta haciendo la lectura.
- dev: Incluye todos los dispositivos de almacenamiento, en forma de archivos, conectados al sistema.
- run: Contiene información del funcionamiento del sistema desde el último arranque. Usuarios logueados, demonios en ejecución, etc.
- /dev/sdaX: Las particiones de el o los discos.
- tmpfs: Aparece como un sistema de archivos montado, aunque usa memoria volátil. Es similar a los discos RAM, que aparecen como discos virtuales, y pueden contener sistemas de archivos. tmpfs normalmente también usa espacio de intercambio en situaciones en las que hay poca memoria volátil disponible. Como los datos están principalmente en memoria volátil, las velocidades para realizar operaciones en tmpfs son generalmente mucho mayores en comparación con un sistema de archivos en otros dispositivos de almacenamiento como discos rígidos. Por usar memoria volátil, los datos en tmpfs no persisten después de reiniciar el sistema.
Opciones del comando df
El comando df posee en su sintaxis una serie de opciones y parámetros que nos permiten hacer peticiones un tanto mas especificas, de éste modo no es posible cambiar la forma en la que se nos presenta la salida. Analizaremos a continuación cada caso.
Por unidad de memoria de almacenamiento
Por defecto, df nos imprime los espacio de memoria ocupados o libres en la unidad de información kilo-bytes. Pero… ¿Que es una unidad de información?
Unidades de información
Partiendo de la unidad mínima de información, el bit (1 ó 0, Verdadero ó Falso, On – Off), nos encontramos con el byte u octeto, conjunto de 8 bits, que definiremos como la unidad básica de información.
Todas las demás unidades que nos vayamos encontrando será múltiplos del byte y no del bit como comúnmente se cree. Es un error usual confundirlos: el byte se denota con una B (b mayúscula) y el bit con una b (b minúscula). El término bit proviene de los vocablos binary digit.
En nuestra vida cotidiana el byte es una unidad demasiado pequeña, cualquier archivo constará de miles o millones de bytes, por lo que usaremos unidades mayores que nos permiten manejar más fácilmente las dimensiones cotidianas de información.
Sistemas de unidades de información
Un sistema de unidades es un conjunto de unidades de medida consistente, normalizado y uniforme. En este caso de unidades de información.
Sistema Internacional de Medidas (SI)
Según el S.I. tenemos el kilobyte, (kB) que son 1000 bytes, el megabyte (MB) que son 1.000.000 debytes, o sea 1.000 kB, y el gigabyte que son 1000.000.000 bytes, o sea 1000 MB. También es usado el Terabyte (TB), 1.000.000.000.000 bytes, es decir, 1.000 GB. Fijémonos en que cada unidad resulta de multiplicar por 1.000 la unidad anterior:
1.000 B son 1kB,1.000 kB son 1MB, 1.000 MB son 1 GB, y 1.000 GB son 1TB.
Este tipo de unidades son potencias de base 10. Y se corresponden con el sistema de numeración decimal.
Comisión Electrotécnica Internacional (CEI)
Los prefijos binarios fijados por la Comisión Electrotécnica Internacional en 1998, que son cantidades muy parecidas pero un poco diferentes. Los prefijos de la CEI son el kibi (ki), el mebi (Mi), el gibi (Gi) y el Tibi (Ti) y la diferencia entre ellos no es de 1.000 como en el SI, sino de 1.024.
Así, 1.024 B son 1kiB, 1.024kiB son 1MiB, 1.024 MiB son 1GiB y 1.024 MiB son 1TiB.
Este tipo de unidades son basadas en potencias de base 2, que se corresponde mejor con el sistema de numeración binario.
Como se puede ver el lío y la confusión pueden ser tremendos si no tenemos bien claros el uso de una u otra. Para los dispositivos de almacenamiento y el lenguaje cotidiano usaremos siempre las unidades del SI, ya que está basado en el sistema de numeración decimal. Sin embargo, el ordenador y los sistemas informáticos o de transmisión de información en general usarán el sistema de numeración del CEI, ya que el sistema de numeración usado es el binario, y los valores de los prefijos de la CEI son potencias de 2.
Por ejemplo: en un disco duro de 500 GB, el ordenador nos hablará de 465 GiB. Un CD-ROM de 700MB tiene 652 MiB y un DVD de 4,7 GB tiene 4,37 GiB.
Cuadro comparativo
A continuación les dejo un cuadro comparativo entre ambos sistemas de unidades de información y los prefijos simbólicos que representan el valor numérico para cada sistema:
Selección de visualización de tamaños según unidades de almacenamiento
El comando df bajo el parámetro -B y una serie de opciones nos permiten visualizar el tamaño de los bloques de memoria en distintas unidades, por defecto según el SI.
Veamos a continuación cada una de estas opciones.
En Kilo-Bytes
Por defecto, al ejecutar nos imprimirá el tamaño de los bloques de memoria en kilo-bytes.
df
ó df -Bk
ó df --block-size=k
En Mega-Bytes
df -Bm
ó
df --block-size=m
En Giga-Bytes
df -Bg
ó df --block-size=g
En Tera-Bytes
df -Bt
ó df --block-size=g
Otras unidades
En lo que concierne al uso de GNU/Linux a nivel usuario, la demostración sobre la unidades hasta los tera-bytes es mas que suficiente, ya que a partir de este, las demás unidades representan tamaños demasiado grandes. De igual modo les dejo las opciones y las unidades que estas representan.
- p = Petabytes
- e = Exabyte
- z = Zettabyte
- y = Yottabyte
Selección de unidades automática
El comando df cuenta con una opción mostrarnos en todos los campos de salida automáticamente ajustados al tamaño, haciendo que esta sea cómoda de leer y se ajuste una unidad según el tamaño a indicar. También podemos solicitarlo según el sistema CEI o SI.
Según el Sistema Internacional de Medidas (SI)
df -H
Según la Comisión Electrotécnica Internacional (CEI)
df -h
Solicitar totales para cada columna
Si queremos que al final de cada columna se nos agregue una fila con la informacion de los totales de cada columna, df cuenta con el parámetro –total para obtener la siguiente salida.
df --total
Podemos hacer uso de algunos de los parámetros ya visto para facilitar la lectura de las unidades de informacion.
df -h --total
ó df -H --total
Solicitar el tipo de sistema de archivos de cada unidad
De forma predeterminada, en la interfaz de df no se muestra el tipo de sistema de archivos. Pero…
¿Qué son los sistemas de archivos?
Un sistema de archivos son los métodos y estructuras de datos que un sistema operativo utiliza para seguir la pista de los archivos de un disco o partición; es decir, es la manera en la que se organizan los archivos en el disco.
Para solicitarlo disponemos del parámetro -T o su variante –print-type, quien nos agregara una nueva columna indicando el tipo de sistema de archivos que corresponde a cada unidad.
df -T
ó df --print-type
Espacio ocupado por inodos
Primero que nada definamos ¿que es un inodo?, también conocido como nodo indice o nodo -i:
Es una estructura de datos presente en los sistemas de archivos de GNU/Linux y también UNIX. En dicha estructura se almacenan características especificas del archivo o directorio presentes en el sistema, como por ejemplo los atributos de estos entre los que encontramos: los permisos, el tamaño del archivo, el o los grupos, la lista de control de accesos, etc.
En GNU/Linux, cada archivo que creas recibe un inodo. También se pueden crear enlaces fijos entre archivos que también utilizan inodos.
Quedarse sin espacio en el disco no es el único problema que podemos enfrentar al ejecutar un sistema GNU/Linux. Ya que, existe un límite en la cantidad de inodos que un sistema de archivos puede usar.
El comando df nos brinda opciones para verificar si nuestro sistemas de archivos está cerca de alcanzar su límite. Para ello ejecutamos el comando df y junto al parámetro -i ó su equivalente –inodes.
También podrías agregar la opción de selección automáticas de unidades de información, así, los tamaños nos serán mas fáciles de leer…

- S.ficheros: El nombre de los archivo del sistema.
- Nodos -i: Indica el tamaño total disponible para los inodos.
- NUsado: Muestra cuando espacio está siendo ocupado por inodos.
- Nlibres: Muestra cuando espacio disponible queda para ser ocupado por inodos.
- NUso%: Muestra el porcentaje del espacio que está siendo usado por inodos.
- Montado en: Nos muestra el directorio donde se encuentra asignado el espacio para inodos.
Personalizar salida de df
Este comando nos permite personalizar la salida, de forma que podamos elegir las columnas que queremos que se nos impriman. Esta orden esta regida por la siguiente sintaxis
df --output=FIELD_LIST
Las opciones disponibles para FIELD_LIST son las siguientes:
- source : Nos listara los recursos. El «S.ficheros: El nombre de lo archivo del sistema»
- fstype : Nos listara el tipo de sistema de archivos (ext4, ext2, etc)
- itotal : Nos listara el tamaño total disponible para los inodos
- iused : Muestra cuando espacio está siendo ocupado por inodos.
- iavail : Muestra cuando espacio disponible queda para ser ocupado por inodos.
- ipcent : Muestra el porcentaje del espacio que está siendo usado por inodos.
- size : Nos muestra el tamaño total disponible del los bloques de la unidad
- used : Muestra cuando espacio está siendo ocupado en cada archivo del sistema.
- avail : Muestra cuando espacio disponible queda para cada archivo del sistema.
- pcent : Muestra el porcentaje del espacio que está siendo usado.
- target : Nos muestra el directorio donde esta cada archivo del sistema.
Pudiendo hacer uso de cualquiera simultáneamente, combinándolas según nuestras necesidades e incluso podemos hacer una petición para que la unidad de los tamaños se elija de forma automática con la opción -h, donde obtendríamos…
df --output=target,size,pcent,itotal,iused,ipcent -h
Puedes seguirnos en:
Ayudanos a mantener el sitio con una contribución.
Muchas gracias!
Espero sea de utilidad.
Saludos, Cristian Bellini.