¿Cual es el espacio usado en Linux?

Hace algún tiempo liberé una extensión para GNOME Shell, con la que podías conocer de un solo vistazo el espacio utilizado en tus diferentes particiones. Se trataba de disk space usage, y tal y como comento en el artículo anterior, para mostrar los datos utilizo la herramienta df. Sin embargo, repasando los artículos que he publicado, he caído en la cuenta, que hasta el momento no le he dedicado ningún artículo, ni a esta herramienta ni a du. Sin embargo, como este es un problema fácilmente subsanable, le voy a dedicar el presente artículo a mostrar el uso y funcionamiento de este par de herramientas. El objeto es poder conocer el espacio usado en Linux desde el terminal, el espacio ocupado de cada una de tus particiones.

Si quieres conocer el espacio utilizado en tus particiones con una interfaz gráfica te recomiendo que utilices Baobab. También para el terminal puedes utilizar una herramienta como ncdu que te permite analizar el espacio del disco duro de forma mas productiva.

Sin embargo, en este artículo, me quiero centrar en du y df, para que de una forma sencilla puedas conocer el espacio usado en Linux.

¿Cual es el espacio usado en Linux?

¿Cual es el espacio usado en Linux?

Como te indicaba en la introducción, el objeto de este artículo es conocer el espacio usado en Linux. El espacio utilizado en cada una de las particiones que tienes montadas. Para este objetivo tienes dos herramientas básicas df y du. Te indico el uso de cada una de ellas con ejemplos, que es como, al menos yo, mejor entiendo las cosas. Además te indicaré como he utilizado estas herramientas en la aplicación disk space usage que he comentado anteriormente.

df para conocer el espacio usado en Linux

df es una herramienta que te muestra el espacio disponible en bloques de 1K por defecto, aunque esto mediante las opcions se puede modificar.

Si lo ejecutas sin argumentos te mostrará el espacio usado en Linux para cada una de las unidades montadas. Así, por ejemplo, en mi caso,

S.ficheros     bloques de 1K    Usados Disponibles Uso% Montado en
udev                 4009612         0     4009612   0% /dev
tmpfs                 806800      2104      804696   1% /run
/dev/sda2           50132760  27395940    20160476  58% /
tmpfs                4033996    174972     3859024   5% /dev/shm
tmpfs                   5120         4        5116   1% /run/lock
tmpfs                4033996         0     4033996   0% /sys/fs/cgroup
/dev/loop1             15104     15104           0 100% /snap/gnome-characters/296
/dev/loop3             55808     55808           0 100% /snap/core18/1074
/dev/loop2            153600    153600           0 100% /snap/gnome-3-28-1804/67
/dev/sda7          161374080 102190184    50957088  67% /datos
/dev/sda1             632532      8828      623704   2% /boot/efi
tmpfs                 806796       112      806684   1% /run/user/1000

Algunas observaciones,

  • Solo he dejado tres de los /dev/loopX, que se corresponden con los paquetes snap, a modo de ejemplo. En mi caso llegaba a un total de trece.
  • No tengo separado /home de /. Sin embargo, puedes ver una partición /datos. Esta partición es donde está parte de mi /home, mas o menos. Por ejemplo, aquí tengo todo los artículos que publico en la página, los podcasts, las aplicaciones que desarrollo, etc. Igualmente, también guardo la configuración de las aplicaciones, etc. Esto de la configuración, lo explico en el podcast sobre dotfiles

Si ejecutas df seguido de un punto de montaje, por ejemplo, en mi caso /datos, el resultado será exclusivamente esa línea en concreto. Por ejemplo,

$ df /datos
S.ficheros     bloques de 1K    Usados Disponibles Uso% Montado en
/dev/sda7          161374080 102190220    50957052  67% /datos

Como ves, esto que te lo muestre en bloques de 1K, realmente no es muy útil, sin embargo, puedes utilizar la opción -h que te devolverá en unidades que son de fácil lectura, o como dice la ayuda de la herramienta legible para humanos. Por ejemplo,

$ df -h /datos
S.ficheros     Tamaño Usados  Disp Uso% Montado en
/dev/sda7        154G    98G   49G  67% /datos

Esto ya es otra cosa, ¿no es cierto?. Pero aún hay mas. Si lo quieres ver en unidades del sistema internacional (múltiplos de 1000), tienes que utilizar la opción -H. Por ejemplo,

$ df -h /datos
S.ficheros     Tamaño Usados  Disp Uso% Montado en
/dev/sda7        166G   105G   53G  67% /datos

Otra interesante opción es ver el espacio total ocupada, no solo por unidad montada, sino también el cómputo total. Para esto utiliza la opción --total.

$ df -h --total
S.ficheros     Tamaño Usados  Disp Uso% Montado en
udev             3,9G      0  3,9G   0% /dev
tmpfs            788M   2,1M  786M   1% /run
/dev/sda2         48G    27G   20G  58% /
tmpfs            3,9G   145M  3,8G   4% /dev/shm
tmpfs            5,0M   4,0K  5,0M   1% /run/lock
tmpfs            3,9G      0  3,9G   0% /sys/fs/cgroup
/dev/loop1        15M    15M     0 100% /snap/gnome-characters/296
/dev/loop3        55M    55M     0 100% /snap/core18/1074
/dev/loop2       150M   150M     0 100% /snap/gnome-3-28-1804/67
/dev/sda7        154G    98G   49G  67% /datos
/dev/sda1        618M   8,7M  610M   2% /boot/efi
tmpfs            788M   112K  788M   1% /run/user/1000
total            217G   125G   82G  61% -

En lugar de mostrar bloques, también puedes mostrar inodos. Un inodo contiene la información de un archivo, directorio, enlace simbólico. Para mostrar la cantidad de inodos, tienes que utilizar la opción -i. Por ejemplo, de nuevo en mi caso,

$df -hi --total
S.ficheros     Nodos-i NUsados NLibres NUso% Montado en
udev              979K     658    979K    1% /dev
tmpfs             985K    1,2K    984K    1% /run
/dev/sda2         3,1M    563K    2,6M   18% /
tmpfs             985K      80    985K    1% /dev/shm
tmpfs             985K       5    985K    1% /run/lock
tmpfs             985K      18    985K    1% /sys/fs/cgroup
/dev/loop1         271     271       0  100% /snap/gnome-characters/296
/dev/loop3        9,9K    9,9K       0  100% /snap/core18/1074
/dev/loop2         28K     28K       0  100% /snap/gnome-3-28-1804/67
/dev/sda7         9,8M   1014K    8,8M   11% /datos
/dev/sda1            0       0       0     - /boot/efi
tmpfs             985K      58    985K    1% /run/user/1000
total              19M    1,8M     18M   10% -

Otras opciones interesantes de df

Además de las opciones que has visto hasta el momento, df viene con algunas otras opciones que en algún momento te pueden ser de utilidad. Así, algunas de estas opciones son las siguientes,

  • -T muestra el tipo de sistema de archivos
  • -t solo muestra aquellos sistemas de archivos que se correspondan con el sistema de archivos indicado. Por ejemplo -t ext4. Si quieres mostrar varios tipos, solo tienes que añadir la opción -t tantas veces como necesites. Por ejemplo -t ext3 -t ext4.
  • -x es exactamente la opción contraria a la anterior, es decir, excluye aquellos tipos que no queramos mostrar. Al igual que en el caso anterior puedes poner tantas como necesites. Por ejemplo, df -x squashfs -x tmpfs -x devtmpfs -T. Por ejemplo,
  • --sync invova a sync antes de obtener información del uso.
  • -l se limita a mostrar información de las unidades locales.
  • -B te permite definir el tamaño del bloque. Anteriormente he comentado que por defectoes de 1 K. Con esta opción lo puedes definir del tamaño que consideres.
$ df -x squashfs -x tmpfs -x devtmpfs -T -h --total
S.ficheros     Tipo Tamaño Usados  Disp Uso% Montado en
/dev/sda2      ext4    48G    27G   20G  58% /
/dev/sda7      ext4   154G    98G   49G  67% /datos
/dev/sda1      vfat   618M   8,7M  610M   2% /boot/efi
total          -      203G   124G   69G  65% -

Estas opciones son las que utilizo en la extensión para GNOME Shell disk space usage.

du para conocer el espacio usado en Linux

Si df te permite trabajar con unidades montadas en tu equipo, du te permite trabajar a nivel de archivo o directorio. Básicamente te permite conocer el espacio usado por un conjunto de archivos o directorios. En el caso de directorios además lo hace de forma recursiva.

Esta herramienta, tiene algunas opciones que son realmente interesantes. Por ejemplo,

  • -c te muestra el total
  • -h al igual que sucedía con df, te devuelve la medición, en unidades que sean legibles.
  • -s muestra única y exclusivamente el total.
  • -d N en el caso de directorios inspecciona hasta ese nivel de profundidad.

Algunos ejemplos,

$ du -h /home/lorenzo/.local/bin/
96M /home/lorenzo/.local/bin/Telegram
156M    /home/lorenzo/.local/bin/
$ du -hc /home/lorenzo/.local/bin/
96M /home/lorenzo/.local/bin/Telegram
156M    /home/lorenzo/.local/bin/
156M    total
$ du -hs /home/lorenzo/.local/bin/
156M    /home/lorenzo/.local/bin/
$ du -hcd1 /home/lorenzo/.local/bin/
96M /home/lorenzo/.local/bin/Telegram
156M    /home/lorenzo/.local/bin/
156M    total
$ du -hcd0 /home/lorenzo/.local/bin/
156M    /home/lorenzo/.local/bin/
156M    total

Diferencias

Como ves du y df hacen operaciones mas o menos parecidas. Pero, ¿cual es la diferencia? df consulta en la metainformación del sistema de archivos, mientras que du lee cada uno de los elementos que existen y lo contabiliza. Esta es la razón por la que df es significativamente más rápido que du.

Esto puede llevar a que exista cierta diferencia entre los datos mostrados por uno, y los mostrados por otro. Por ejemplo, en el caso de mi partición de datos, el resultado es el siguiente,

du -s /datosdf /datos
9971722099777736
$ du -s /datos
99717220    /datos

$ df /datos
S.ficheros     bloques de 1K   Usados Disponibles Uso% Montado en
/dev/sda7          161374080 99777736    53369536  66% /datos

Entre otras razones, una que explica esta diferencia reside a que un proceso en ejecución puede mantener un archivo borrado abierto. Esto implica que el espacio reservado se contabiliza por df y no por du.


Más información,

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *