2014-12-15 3 views
6

есть команда в bash, которая может дать вам общее количество дисковых пространств/номеров жесткого диска.команда linux для поиска общего числа дисков и жестких дисков

Я знаю, что команда df очень полезно, но выход слишком многословен:

# df -h 
    Filesystem  Size Used Avail Use% Mounted on 
    /dev/sda4  721G 192G 492G 29%/
    tmpfs   129G 112K 129G 1% /dev/shm 
    /dev/sda1  194M 92M 93M 50% /boot 
    /dev/sdj1  917G 547M 870G 1% /data10 
    /dev/sdk1  917G 214G 657G 25% /data11 
    /dev/sdl1  917G 200M 871G 1% /data12 
    /dev/sdm1  917G 200M 871G 1% /data13 
    /dev/sdn1  917G 200M 871G 1% /data14 
    /dev/sdo1  917G 200M 871G 1% /data15 
    /dev/sdp1  917G 16G 855G 2% /data16 
    /dev/sdb1  917G 4.6G 866G 1% /data2 
    /dev/sdc1  917G 74G 797G 9% /data3 
    /dev/sdd1  917G 200M 871G 1% /data4 
    /dev/sde1  917G 200M 871G 1% /data5 
    /dev/sdf1  917G 200M 871G 1% /data6 
    /dev/sdg1  917G 764G 107G 88% /data7 
    /dev/sdh1  917G 51G 820G 6% /data8 
    /dev/sdi1  917G 19G 853G 3% /data9 
    /dev/sda2  193G 53G 130G 30% /home 
    cm_processes 129G 46M 129G 1% /var/run/cloudera-scm-agent/process 

Я в принципе хочу «16 Тб», в конце концов, есть команда под рукой, или я должен написать какую-то программу для расчета общий диск основан на выходе из df.

ответ

4

насчет:

df --total 

Подсказка: первый взгляд на страницу вручную: man df. Мне трудно в эти дни находить аспекты для программы, которые не были реализованы каким-то хорошим флагом. Linux люди просто, похоже, знают, что хотят или нужны программисты.

Или, если вы хотите только общее:

df --total | tail -n 1 

И если вы хотите, чтобы указать его в специальном размером блока (например, TB), вы можете установить -B флаг:

df --total -BT | tail -n 1 

И в случае, если вас интересует только общий размер (например, вы хотите использовать результат в другой программе bash):

df --total -BT | tail -n 1 | sed -E 's/total *([^ ]*).*/\1/' 
+0

Некоторые версии ' df' не включают '--total' (как мой). –

+0

@Jidder: какая версия 'df'? 'df --version' ... Для 8.21 это работает отлично. –

+0

'df (GNU coreutils) 5.93 'его довольно старый ha, как раз думал я упомянул бы его. –

2

ответ CommuSoft является лучше, но здесь другое решение с использованием AWK:

df -m | awk '{ SUM += $2} END { print SUM/1024/1024"TB" }' 

Использование опции -m сделать результаты df отображаются в том же блоке (МБ). Простое разделение может легко преобразовать результат в ТБ.

2

Другое решение с использованием awk. Это будет печатать заголовок и общие линии:

df --total -h | awk '!/^\//' 
  • awk команда выводит все строки, за исключением тех, которые начинаются с символа /.
  • df с -h или --human-readable размеры печати в пределах 1024 (например, 1023 М).

Результат будет выглядеть следующим образом:

Filesystem  Size Used Avail Use% Mounted on 
total   3.9T 1.7T 2.3T 42% - 

В Mounted on поле бесполезно, вы можете удалить его, добавив sed к предыдущей команде:

$ df --total -h | awk '!/^\//' | sed -E 's/Mounted on|\s-//' 
Filesystem  Size Used Avail Use% 
total   3.9T 1.7T 2.3T 42%