Для dfрасчета итогов используйте --totalsопцию. Если вы хотите, чтобы итоги были только по некоторым выбранным дискам, укажите их в качестве аргументов.
Примеры (и вывод с моего компьютера)
Это общая сумма для всех локальных креплений:
$ 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%
Ограничение несколькими дисками (обратите внимание, что если указанный путь не является точной точкой монтирования, используется ближайшая содержащая точка монтирования [см. Примечание в конце] ):
$ 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%
или используя devимена:
$ 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%
Дальнейшая настройка
Если вы хотите перечислить все монтирования, кроме «специальных», вы можете использовать -xопцию для исключения по типу раздела. (Используйте -Tопцию, чтобы показать типы.)
Лично для интерактивного использования я использую следующий псевдоним bash (добавлен в ~/.bash_aliases), чтобы исключить «нефизические» монтирования.
alias df='df -h -x devtmpfs -x tmpfs -x debugfs'
Заметка
Указание путей в точках монтирования может иногда давать результаты в другой форме, указывая точный путь к точке монтирования. Например, на моем ноутбуке я использую sshfsмой локальный файловый сервер.
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
Корень сервера ( /) смонтирован в ~/.server-root. Однако на сервере смонтированы диски, о /disks/*которых df(на ноутбуке) «ничего не известно».
Очевидно, dfможно перечислить использование диска на разных монтировках на сервере, если указаны правильные пути. Тем не менее, он показывает те же «Файловая система» и «Установлено» для всех путей, поскольку (я считаю), что это единственная точка монтирования (связанная с этим sshfsмонтированием) в локальной таблице монтирования ядра.
Другое дело: на самом деле не связано с вопросом, но связано с предыдущим ответом на вопрос.
Добавление чисел с помощью awkсценария (или аналогичного), как это делают некоторые ранее опубликованные ответы, не является хорошей идеей при использовании -hфлага. Это потому, что требуется специальная обработка. Вы не можете просто сделать size+=$2;для поля, которое находится 418Mв одном ряду и 12Gв другом, и извлечь из него что-то полезное ...
Для примера с awkдобавлением 500Mк 10.2Gдоходности
$ echo -e '500M\n10.2G' | awk '{size+=$1;} END{print size;}'
510.2
510,2 из чего?
Здесь явно есть проблема. Так что, просто для запоминания , при выполнении (автоматического) вычисления на выходе df (и других, которые могут использовать «читаемые человеком» числа) . Убедитесь, что вы не используете этот -hфлаг и что вместо этого нормализован ввод данных в сценарий расчета (например, в байтах, блоках, килобайтах или что-либо еще) и выполните «масштабирование отображения» в конце. В большинстве языков сценариев и языков программирования нетрудно добавить что-то вроде:
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...)
где значение в байтах, а порог - это значение порядка 1000. Результатом этого метода является то, что вы можете легко настроить его для получения печатных значений (исключая префикс) в желаемом диапазоне и с количеством значащих цифр для вашего выбор. По сравнению со случаем со стандартными утилитами с -hпереключателями, где формат часто фиксирован.
Конечно, этот расчет часто можно сделать более эффективным и / или элегантным, но это вопрос для конкретного языка, на котором он написан. Честно говоря, если он используется в пользовательском скрипте, который запускается только сейчас и потом, для интерактивного просмотра некоторая информация, эффективность на самом деле не является проблемой.