Для 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
переключателями, где формат часто фиксирован.
Конечно, этот расчет часто можно сделать более эффективным и / или элегантным, но это вопрос для конкретного языка, на котором он написан. Честно говоря, если он используется в пользовательском скрипте, который запускается только сейчас и потом, для интерактивного просмотра некоторая информация, эффективность на самом деле не является проблемой.