Получить размер моих дисков в нескольких системах [дубликат]

-1
27.03.2018, 15:51
4 ответа

попробуй

fdisk -l | awk '/Linux/ { s=$(NF-4) ;} END { print s}'

где

  • /Linux/выберет строку Linux
  • { s=$(NF-4) ;}установить 4-е поле из последнего (вы также можете использовать $4в этом случае.
  • ENDв конце (больше не вводить)
  • { print s}распечатайте его.

Редактировать:

  • ваш код grep..| cut.. | awk^nможно сократить до

    awk '/Linux/ { s=$4/(1024^2)  ;} END { printf "%d Gb\n",s}'
    
  • Сектор
  • обычно имеет размер 512 байт, вам может понадобиться добавить еще один раздел/2(на 2 ), чтобы получить Гб.

1
28.01.2020, 05:07

Использование :

Для получения максимального значения сектора:

fdisk -l | awk '$6=="Linux" && v < $4{v=$4}END{print v}' 
1
28.01.2020, 05:07

Если вы хотите получить размер диска, вы можете взять значение:

cat /sys/block/sda/size

Чтобы определить основной раздел, я бы сказал, что вы можете сделать что-то вроде этого:

 df | grep -E "\/$" | cut -d' ' -f1 | sed 's/[0-9]*//g'

Это даст вам имя смонтированного диска /в моем случае /dev/sda.
После того, как вы хотите, чтобы скрипт это.

Старый ответ

В этом случае я бы просто использовал/sys:

cat /sys/block/sda/subsystem/sda3/size 

, который дает количество секторов, и я бы использовал:

cat /sys/block/sda/subsystem/sda3/start

, чтобы получить номер начального сектора.

Это было бы намного проще, чем синтаксический анализ fdisk, который не всегда одинаков. Было бы легко получить эти значения с помощью простого шаблона:

cat /sys/block/sda/subsystem/sda*/size
2
28.01.2020, 05:07

Вместо передачи блочного устройства в df вы также можете передать точку монтирования. на самом деле это поведение по умолчанию

# df /
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/root        8191416 6002396   2088840  75% /

источник :справочная страница df:

df displays the amount of disk space available on the file system containing each file name argument.

0
28.01.2020, 05:07

Теги

Похожие вопросы