Para df
calcular totales, use la --totals
opción. Si desea los totales solo en algunas unidades seleccionadas, especifíquelas como argumentos.
Ejemplos (y salida de mi computadora)
Este es el total de todas las monturas locales:
$ df --total -hl
Filesystem Size Used Avail Use% Mounted on
/dev/sdb1 14G 12G 2,1G 85% /
none 490M 660K 489M 1% /dev
none 497M 1,5M 495M 1% /dev/shm
none 497M 260K 496M 1% /var/run
none 497M 0 497M 0% /var/lock
/dev/sda1 3,7G 418M 3,3G 12% /fastdisk
total 19G 12G 7,3G 62%
Restringir a algunas unidades (tenga en cuenta que si la ruta especificada no es un punto de montaje exacto, se utiliza el punto de montaje que contiene más cercano [ver nota al final] ):
$ df -hl --total /home /fastdisk
Filesystem Size Used Avail Use% Mounted on
/dev/sdb1 14G 12G 2,1G 85% /
/dev/sda1 3,7G 418M 3,3G 12% /fastdisk
total 17G 12G 5,3G 69%
o usando dev
nombres:
$ df -hl --total /dev/sda1 /dev/sdb1
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 3,7G 418M 3,3G 12% /fastdisk
/dev/sdb1 14G 12G 2,1G 85% /
total 17G 12G 5,3G 69%
Personalización adicional
Si desea enumerar todos los montajes, excepto los 'especiales', puede usar la -x
opción para excluir por tipo de partición. (Use la -T
opción para mostrar los tipos).
Personalmente, para uso interactivo, utilizo el siguiente alias bash (agregado a ~/.bash_aliases
) para excluir los montajes 'no físicos'.
alias df='df -h -x devtmpfs -x tmpfs -x debugfs'
Nota
La especificación de rutas dentro de los puntos de montaje a veces puede generar resultados de forma diferente, especificando la ruta exacta al punto de montaje. Por ejemplo, en mi computadora portátil uso sshfs
para montar mi servidor de archivos (local).
df -h ~/.server-root/ ~/.server-root/disks/A ~/.server-root/disks/B
Filesystem Size Used Avail Use% Mounted on
johan@server:/ 185G 58G 118G 33% /home/johan/.server-root
johan@server:/ 1,9T 637G 1,2T 35% /home/johan/.server-root
johan@server:/ 1,8T 1,1T 757G 59% /home/johan/.server-root
El servidor raíz ( /
) está montado en ~/.server-root
. Sin embargo, en el servidor, los discos están montados /disks/*
, lo que df
(en la computadora portátil) no 'conoce'.
Evidentemente, df
puede enumerar el uso del disco en los diferentes montajes en el servidor, si se le dan las rutas adecuadas. Sin embargo, muestra el mismo "Sistema de archivos" y "Montado en" para todas las rutas, ya que (creo) ese es el único punto de montaje (relacionado con este sshfs
montaje) en la tabla de montaje del núcleo local.
Otra cosa: no está realmente relacionado con la pregunta, sino con una respuesta previa a la pregunta.
Sumar los números con un awk
guión (o similar), como hacen algunas respuestas publicadas anteriormente, no es una buena idea cuando se usa la -h
bandera. Esto se debe a que se requiere un manejo especial. No puede simplemente hacer size+=$2;
un campo que está 418M
en una fila y 12G
en otra y obtener algo útil de él ...
Por ejemplo con awk
, sumando 500M
a 10.2G
rendimientos
$ echo -e '500M\n10.2G' | awk '{size+=$1;} END{print size;}'
510.2
510.2 de qué?
Claramente hay un problema aquí. Entonces, solo como un consejo para recordar , al hacer un cálculo (automatizado) en la salida de df
(y otros que pueden usar números 'legibles por humanos' ) . Asegúrese de no utilizar el -h
indicador y de que la entrada al script de cálculo esté, en cambio, normalizada (por ejemplo, a bytes, bloques, KB o lo que sea) y realice la 'escala de visualización' al final. No es difícil, en la mayoría de los lenguajes de programación y scripting, agregar algo como:
If value < threshold Then
print (value),"B"
Else If value < 1024*threshold Then
print (value/1024),"kB"
Else If value < 1024*1024*threshold Then
print (value/1024/1024),"MB"
(and so on...)
donde el valor está en bytes y el umbral es un valor del orden de 1000. El resultado final de este método es que puede ajustarlo fácilmente para producir valores impresos (excluyendo el prefijo) en un rango deseado y con un número de dígitos significativos para su elegir. En comparación con el caso de las utilidades estándar con -h
conmutadores, donde el formato suele ser fijo.
Por supuesto, este cálculo a menudo se puede hacer más eficiente y / o elegante, pero esa es una pregunta para el lenguaje específico en el que está escrito. Francamente, si se usa en un script de usuario que se ejecuta solo de vez en cuando para ver interactivamente alguna información, la eficiencia no es realmente una preocupación.