Почти невозможно дать краткий ответ на то, что является Unix в эти дни. В первые годы BSD был распределением изменений в Unix, дополнительных функциях и портах на новые платформы. В конечном счете кто-то решил распределить полный пакет BSD (полученный из Unix) названный 386BSD. Вещи произошли, и NetBSD и FreeBSD родились. Затем судебный процесс AT&T мешал им продолжиться. Большинство (но не все) исходный код Unix было удалено и переписано людьми BSD в FreeBSD и NetBSD. Частями FreeBSD является истинный Unix в исходном смысле.
SysV Unix отличен также.. существует много современных вариантов Unix, полученных из него включая Солярис, SCO Unixware (раньше Microsoft Xenix), и т.д. Существуют также расхождения как МАХ с Mac OS X, бывшим основанным на NeXTSTEP/OpenSTEP. bsd родословная, включенная в FreeBSD, показывает большинство расхождений, но не включает всех их. (MirBSD, MidnightBSD...)
SCO утверждает, что владела UNIX, но суды постановили, что Novell имеет его. Novell продал товарный знак Open Group, и они продают набор тестов совместимости и сертификацию. Mac OS X, AIX и другие вещи, некоторые люди не рассматривают Unix, сертифицированы. Однажды Linux был сертифицирован с помощью комплекта Open Group IBM. Все же Linux считают клоном Unix.
Это становится вопросом о религии отсюда. Действительно ли это - источник, сертификация, история... вам решать.
Я думаю, что Вы хотели сумму обоих size
и use%
df -hl | grep 'sda2\|sda3' | awk 'BEGIN{print "Size","Use%"} {size+=$2;percent+=$5;} END{print size,percent}' | column -t
Для 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_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
флаг и что вход к сценарию вычисления, вместо этого, нормализован (например, к байтам, блокам, KBS, или безотносительно) и делает ‘дисплей, масштабирующийся’ в конце. Это не к твердому, в большинстве языков сценариев и языков программирования, для добавления чего-то как:
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...)
где значение находится в байтах, и порог является значением на порядке 1 000. Результат этого метода - то, что можно легко настроить его для создания распечатанных значений (исключая префикс) в желаемом диапазоне и со многими значащими цифрами к выбору. По сравнению со случаем со стандартными утилитами с -h
переключатели, где формат часто фиксируется.
Конечно, это вычисление может часто делаться более эффективным и/или изящным, но это - вопрос для определенного языка, в котором оно записано. Откровенно говоря, если это используется в пользовательском скрипте, который запущен только время от времени для интерактивного просмотра некоторой информации, эффективность не является действительно беспокойством.
Вы использовали бы инструмент как awk
:
df -hl | awk '/^\/dev\/sd[ab]/ { sum+=$5 } END { print sum }'
Где:
/^\/dev\/sd[ab]/
шаблон для фильтрации только тех строк, которые начинаются /dev/sda
или /dev/sdb
{ sum+=$5 }
добавьте пятое поле для любых соответствий вышеупомянутого шаблонаМожно найти некоторых полезными awk
ссылки на Wiki Awk.info.
size+=$1
) к этому вопросу. Этот метод действительно не совместим с-h
опцияdf
. – Johan E 19.02.2013, 05:16