есть замечательная утилита
lsblk
например, вывести информацию по
всем смонтированным
FS(файловым системам) в виде - имя, доступный размер, используемый размер и процент от использования
$ lsblk -lo NAME,FSAVAIL,FSUSED,FSUSE\% | awk 'NF>1'
NAME FSAVAIL FSUSED FSUSE%
nvme1n1p1 423M 88M 17%
nvme1n1p2 423,2G 29G 6%
nvme0n1p2 360,2G 73,3G 16%
awk
здесь используется для отсечения не смонтированных ФС и самих дисков у которых естественно будет отсутствовать доступный размер.
Если нужен общий размер файловой системы то добавьте параметр
FSSIZE
если нужно без шапки то используй ключ
-n
$ lsblk -nlo NAME,FSAVAIL,FSUSED,FSUSE\% | awk 'NF>1'
nvme1n1p1 423M 88M 17%
nvme1n1p2 423,2G 29G 6%
nvme0n1p2 360,2G 73,3G 16%
если нужно по конкретной ФС то просто указываем её
$ lsblk -nlo NAME,FSAVAIL,FSUSED,FSUSE\% /dev/nvme1n1p2
nvme1n1p2 423,2G 29G 6%
если нужна конкретная цифра то оставляем тока нужный параметр
$ lsblk -no FSUSED /dev/nvme1n1p2
29G
при желании можно получить данные через
json и после нужным образом обработать, например:
$ lsblk -Jo FSUSED /dev/nvme1n1p2 | jq -r '.blockdevices[].fsused'
29G
если нужно в байтах, то используйте ключ
-b
$ lsblk -Jbo FSUSED /dev/nvme1n1p2 | jq -r '.blockdevices[].fsused'
31178240000
еще как пример, для файловой системы
nvme1n1p2
отобразим в форматированном виде информацию по свободному и занятому пространству:
$ lsblk -Jo FSAVAIL,FSUSED /dev/nvme1n1p2 | jq -r '.blockdevices[] | "Всего занято:\t\(.fsused)\nВсего свободно
:\t\(.fsavail)"'
Всего занято: 29G
Всего свободно: 423,2G
п.с.
если нужна
обобщённая информация сразу по всему диску то наверное проще будет использовать
smartctl
sudo smartctl -ja /dev/nvme0n1 | jq -r '.nvme_namespaces[] | "Всего занято:\t\(.utilization.bytes)\nВсего свободно:\t\(.capacity.bytes - .utilization.bytes)"'
Всего занято: 88322768896
Всего свободно: 411785093120
правда это скорее всего будет с учетом размера метаданных самих файловых систем расположенных на диске, что будет не так интересно, хотя для быстрой оценки диска сойдёт.
(здесь вывод json под nvme, для других видов дисков скорее всего нужно будет подправить)
и да, для преобразования размеров довольно удобно использовать утилиту
numfmt
$ sudo smartctl -ja /dev/nvme0n1 | jq -r '.nvme_namespaces[] | "Всего занято: \(.utilization.bytes)\nВсего свободно: \(.capacity.bytes - .utilization.bytes)"' | numfmt --to=iec --field 3 --padding=1 --format %.1f
Всего занято: 82,3G
Всего свободно: 383,6G